我的问题是这样的:我正在使用 Visual Studio 2010 开发一个小型解析器。我使用 CMake 作为构建配置工具。
但是我发现默认的可执行构建行为很不方便。我想要的是,让我的最终程序位于:
E:/parsec/bin/<exe-name>.<build-type>.exe
而不是
E:/parsec/bin/<build-type>/<exe-name>.exe
你将如何使用 CMake 做到这一点?
我的问题是这样的:我正在使用 Visual Studio 2010 开发一个小型解析器。我使用 CMake 作为构建配置工具。
但是我发现默认的可执行构建行为很不方便。我想要的是,让我的最终程序位于:
E:/parsec/bin/<exe-name>.<build-type>.exe
而不是
E:/parsec/bin/<build-type>/<exe-name>.exe
你将如何使用 CMake 做到这一点?
有几种选择:
成功构建后,您可以复制可执行文件(请参阅初学者答案),但使用安装目标可能会更好:
使用install命令指定将被复制到CMAKE_INSTALL_PREFIX目录的目标(可执行文件、库、头文件等)。您可以在 cmake 的命令行上(或在 cmake GUI 中)指定 CMAKE_INSTALL_PREFIX。
警告:不建议直接在 cmakelists.txt 中设置绝对路径。
使用set_target_properties自定义RUNTIME_OUTPUT_DIRECTORY
set_target_properties( yourexe PROPERTIES RUNTIME_OUTPUT_DIRECTORY E:/parsec/bin/ )
作为替代方案,修改CMAKE_RUNTIME_OUTPUT_DIRECTORY允许您为cmake 项目中的所有目标指定此项。在构建 dll 时,请注意修改CMAKE_LIBRARY_OUTPUT_DIRECTORY 。
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
附加信息:看看这些问题:
很可能您需要使用一个单独的自定义命令来复制您的二进制文件,该命令看起来类似于以下命令:
add_custom_command(target your_target_name
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${EXAMPLE_BIN_NAME} ${PROJECT_BINARY_DIR}/.
)