The following issue has been SUBMITTED. 
====================================================================== 
https://public.kitware.com/Bug/view.php?id=16104 
====================================================================== 
Reported By:                Vladislav K.
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   16104
Category:                   CMake
Reproducibility:            always
Severity:                   crash
Priority:                   high
Status:                     new
====================================================================== 
Date Submitted:             2016-05-15 06:35 EDT
Last Modified:              2016-05-15 06:35 EDT
====================================================================== 
Summary:                    The extra escape sequence \${...} in the generated
export file
Description: 
The extra escape sequence \${} in the generated export file

# 
   if (UNIX)
      set(_build_type ${CMAKE_BUILD_TYPE} )
   else()
             set(_build_type \${BUILD_TYPE} ) #previously \@BUILD_TYPE@
   endif()

      install( TARGETS ${TARGETNAME}
               EXPORT  ${EXPORT_NAME}
               RUNTIME DESTINATION ${_build_type}/bin
               LIBRARY DESTINATION ${_build_type}/lib
               ARCHIVE DESTINATION ${_build_type}/lib
             )
...In cmake 3.5.2 in the performance of the export file, an error occurs


Ok.                                                                           
# in cmake_install.cmake 3.0.0 or 3.5.2 ---> ${BUILD_TYPE} 
file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/Win64/VC12/${BUILD_TYPE}/lib"
TYPE STATIC_LIBRARY OPTIONAL FILES
"X:/CTVMO/bm/build_cm-vc12-win64/Win64/VC12/Debug/lib/bm-system-mem-debug.lib")

Ok.                                                                            
 # in bm-export-debug.cmake 3.0.0 ---> ${BUILD_TYPE} 
# Import target "bm-system-mem" for configuration "Debug"
set_property(TARGET bm-system-mem APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(bm-system-mem PROPERTIES
  IMPORTED_IMPLIB_DEBUG
"${_IMPORT_PREFIX}/Win64/VC12/${BUILD_TYPE}/lib/bm-system-mem-debug.lib"

IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG
"Psapi;Winmm;rpcrt4;X:/CTVMO/ext_sdk/sdk/libs/win64/VC12/zlib1d.lib;X:/CTVMO/ext_sdk/sdk/libs/win64/VC12/libbz2d.lib"
  IMPORTED_LOCATION_DEBUG
"${_IMPORT_PREFIX}/Win64/VC12/${BUILD_TYPE}/bin/bm-system-mem-debug.dll"
  )

Error.                                                                          
       
 # in bm-export-debug.cmake 3.5.2 ----> \${_BUILD_TYPE}.
# Import target "bm-system-mem" for configuration "Debug"
set_property(TARGET bm-system-mem APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(bm-system-mem PROPERTIES
  IMPORTED_IMPLIB_DEBUG
"${_IMPORT_PREFIX}/Win32/VC12/\${_BUILD_TYPE}/lib/bm-system-mem-debug.lib"
  IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG
"Psapi;Winmm;rpcrt4;X:/CTVMO/ext_sdk/sdk/libs/Win32/VC12/zlib1d.lib;X:/CTVMO/ext_sdk/sdk/libs/Win32/VC12/libbz2d.lib"
  IMPORTED_LOCATION_DEBUG
"${_IMPORT_PREFIX}/Win32/VC12/\${_BUILD_TYPE}/bin/bm-system-mem-debug.dll"
  )

cmake 3.5.2 Beat changes in cmExportFileGenerator.cxx:
cmExportFileGenerator::GenerateImportPropertyCode(...
1152     os << "  " << pi->first << " "
1153       << cmExportFileGeneratorEscape(pi->second) << "\n";

previously in cmake 3.0.0 cmExportFileGenerator.cxx:
cmExportFileGenerator::GenerateImportPropertyCode(...
1026  os << "  " << pi->first << " \"" << pi->second << "\"\n";


As a special case the error is eliminated by changing in
//----------------------------------------------------------------------------
static std::string cmExportFileGeneratorEscape(std::string const& str)
{
  // Escape a property value for writing into a .cmake file.
  std::string result = cmOutputConverter::EscapeForCMake(str);
  // Un-escape variable references generated by our own export code.
  cmSystemTools::ReplaceString(result,
                               "\\${_IMPORT_PREFIX}",
                               "${_IMPORT_PREFIX}");
  cmSystemTools::ReplaceString(result,
                               "\\${CMAKE_IMPORT_LIBRARY_SUFFIX}",
                               "${CMAKE_IMPORT_LIBRARY_SUFFIX}");
////////////////////////////////////////////////////////////////////
// My insert vvvvvv
  cmSystemTools::ReplaceString(result,
                               "\\${BUILD_TYPE}",
                               "${BUILD_TYPE}");
//End my insert
///////////////////////////////////////////////////////////////////
  return result;
}

P.S.
Use \@BUILD_TYPE@ in cmake 3.0.0 Ok.
Warning in cmake 3.5.2:
 To many warning of use @BUILD_TYPE@ instead @BUILD_TYPE@ by run
cmake_install.cmake 
 No way to set cmake policy CMP0053 in cmake_install.cmake

====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2016-05-15 06:35 Vladislav K.   New Issue                                    
======================================================================

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake-developers

Reply via email to