Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CMake运行C++;程序后期构建 我有一个C++编写的应用程序,我使用CMASE来构建和释放二进制文件。_C++_Visual Studio 2010_Cmake_Build Process_Post Build Event - Fatal编程技术网

使用CMake运行C++;程序后期构建 我有一个C++编写的应用程序,我使用CMASE来构建和释放二进制文件。

使用CMake运行C++;程序后期构建 我有一个C++编写的应用程序,我使用CMASE来构建和释放二进制文件。,c++,visual-studio-2010,cmake,build-process,post-build-event,C++,Visual Studio 2010,Cmake,Build Process,Post Build Event,我想让CMakeLists.txt脚本编译并运行一个CPP文件,该文件用于在为应用程序构建二进制文件后为许可证文件添加时间戳和加密。我见过运行execute\u进程命令的示例,如下所示: execute_process(COMMAND "gcc -o foo foo.cpp" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) execute_process(COMMAND "./foo"

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

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)

我正在使用VisualStudio2010在Windows上进行构建。问题是,我不知道如何让CMake在VS的构建过程中运行程序。我希望生成操作中的最后一件事是许可证文件时间戳,但我对VS或CMake的了解还不够,无法完成此设置。

您说要在生成后运行该文件
execute\u process()
在CMake时运行,而不是在构建时运行。您要查找的是
添加自定义命令()


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

上述两个命令都可以由单个
add_custom_target()
替换,该命令使用
命令
关键字,并可以发出任何任务,既是“驱动目标”又是任务调用方本身(同样,LicenseStamper将是必需的依赖目标)<代码>添加自定义命令()
在这种情况下是多余的
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
)