[cmake-developers] [CMake 0016104]: The extra escape sequence \${...} in the generated export file
Mantis Bug Tracker
mantis at public.kitware.com
Sun May 15 06:35:06 EDT 2016
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
======================================================================
More information about the cmake-developers
mailing list