CMake add_custom_target():使用'Debug-> Start Debugging'运行自定义命令

add_custom_target(NSISTest_Preprocess SOURCES precompress.nsi) add_custom_command(TARGET NSISTest_Preprocess POST_BUILD COMMAND "${NSIS_PATH}" "...\\precompress.nsi") 

安装程序的输出名称在nsi脚本中定义。 现在我想简单地运行安装程序。 如何指定在Visual Studio 2010中使用“Debug-> Start Debugging”或“Debug-> Start Without Debugging”时会发生什么情况?

我尝试了CreateLaunchers.cmake脚本,该脚本生成.user文件,但我认为它只适用于add_executable

我也尝试了目标属性ARCHIVE_OUTPUT_NAMELIBRARY_OUTPUT_NAMELIBRARY_OUTPUT_NAME ,但没有任何效果。

Solutions Collecting From Web of "CMake add_custom_target():使用'Debug-> Start Debugging'运行自定义命令"

.user设置方法也适用于自定义目标。 您可以添加 – 如果路径是已知的 – 安装程序的.exe作为调试器应该调用“调试 – >开始调试”的命令。

VS2010Test-Debug.vcxproj.user.in

 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <LocalDebuggerCommand>${_my_installer_path}</LocalDebuggerCommand> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> </PropertyGroup> </Project> 

的CMakeLists.txt

 ... if (MSVC_VERSION GREATER 1599 AND NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/NSISTest_Preprocess.vcxproj.user") file(TO_NATIVE_PATH "[your installer's path goes here]" _my_installer_path) configure_file( "VS2010Test-Debug.vcxproj.user.in" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/NSISTest_Preprocess.vcxproj.user" ) file( COPY "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/NSISTest_Preprocess.vcxproj.user" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() 

背景

  • 当文件不存在时,我只复制/配置文件,因为VS不能很好地处理.user文件的外部更改
  • 我必须确保所有文件访问权限设置正确,因为您的SCM可能会设置一个只读标志(由configure_file()维护)

参考

  • 使用CMake设置Visual Studio调试器路径