在 CLion 中构建后自动将可执行文件复制到目录? (使用CMake)
Automatically copy executable to directory after build in CLion? (using CMake)
如何让 CLion 在每次构建后自动将我编译的可执行文件复制到指定目录?
由于 CLion 使用 CMake,我想这应该可以通过 CMakeLists.txt 文件中的一些 CMake 命令实现。但是我不知道怎么做。
我不知道 CLion,但通常您可以在 CMake 中将其作为 post-build step to an executable target 添加:
add_executable(MyExe ...)
add_custom_command(TARGET MyExe
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MyExe> SomeOtherDir)
参见例如Copy target file to another location in a post build step in CMake
我用CMAKE_RUNTIME_OUTPUT_DIRECTORY。它将是您的输出将要编译的地方。如果你需要再做一个副本,那你就需要做一些技巧了。
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_PATH}/bin/client/${CMAKE_BUILD_TYPE})
我最喜欢的选择是按照说明直接在正确的文件夹中生成可执行文件 here:
秘密是使用目标 属性 RUNTIME_OUTPUT_DIRECTORY
。这具有每个配置选项(例如 RUNTIME_OUTPUT_DIRECTORY_DEBUG)。
set_target_properties(mylibrary PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_DEBUG <debug path>
RUNTIME_OUTPUT_DIRECTORY_RELEASE <release path>
)
有关详细信息,请参阅 this link。
但是您还可以 运行 在您的终端上:
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY"
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY_<CONFIG>"
编译后复制可执行文件是一个很好的解决方案。
如何让 CLion 在每次构建后自动将我编译的可执行文件复制到指定目录?
由于 CLion 使用 CMake,我想这应该可以通过 CMakeLists.txt 文件中的一些 CMake 命令实现。但是我不知道怎么做。
我不知道 CLion,但通常您可以在 CMake 中将其作为 post-build step to an executable target 添加:
add_executable(MyExe ...)
add_custom_command(TARGET MyExe
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:MyExe> SomeOtherDir)
参见例如Copy target file to another location in a post build step in CMake
我用CMAKE_RUNTIME_OUTPUT_DIRECTORY。它将是您的输出将要编译的地方。如果你需要再做一个副本,那你就需要做一些技巧了。
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_PATH}/bin/client/${CMAKE_BUILD_TYPE})
我最喜欢的选择是按照说明直接在正确的文件夹中生成可执行文件 here:
秘密是使用目标 属性 RUNTIME_OUTPUT_DIRECTORY
。这具有每个配置选项(例如 RUNTIME_OUTPUT_DIRECTORY_DEBUG)。
set_target_properties(mylibrary PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_DEBUG <debug path>
RUNTIME_OUTPUT_DIRECTORY_RELEASE <release path>
)
有关详细信息,请参阅 this link。
但是您还可以 运行 在您的终端上:
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY"
cmake --help-property "RUNTIME_OUTPUT_DIRECTORY_<CONFIG>"
编译后复制可执行文件是一个很好的解决方案。