使用CMake在构建后运行C++程序

bur*_*n16 5 c++ build-process cmake visual-studio-2010 post-build-event

我有一个用C++编写的应用程序,我使用CMake来构建和发布二进制文件.

我想让CMakeLists.txt脚本编译并运行一个CPP文件,该文件用于在为应用程序构建二进制文件后对许可证文件加时间戳并加密.我见过运行execute_process命令的例子,例如:

execute_process(COMMAND "gcc -o foo foo.cpp"
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
execute_process(COMMAND "./foo"
                WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                RESULT_VARIABLE MY_FOO_VAR)
Run Code Online (Sandbox Code Playgroud)

我正在使用Visual Studio 2010在Windows上进行构建.问题是我不确定如何在VS的构建过程中让CMake运行程序.我希望构建操作中的最后一件事是许可文件时间戳,但我对VS或CMake的了解还不够.

Rei*_*ica 13

你说你想在构建后 运行该文件.execute_process()在CMake时运行,而不是在构建时运行.您正在寻找的是add_custom_command():

add_executable(LicenseStamper stamper.cpp)

add_custom_command(
  OUTPUT stamped_file.lic
  COMMAND LicenseStamper any other arguments
  DEPENDS any/dependency.file
  COMMENT "Stamping the license"
  VERBATIM
)

add_custom_target(
  StampTheLicense ALL
  DEPENDS stamped_file.lic
)
Run Code Online (Sandbox Code Playgroud)

自定义命令将运行可执行文件(如有必要,首先构建它).自定义目标将驱动自定义命令 - 它取决于命令的输出,因此在构建目标时,它将需要构建其依赖项,从而导致自定义命令运行.