我有一个用 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)
我正在使用 Visual Studio 2010 在 Windows 上进行构建。问题是我不确定如何让 CMake 在 VS 的构建过程中运行程序。我希望构建操作中的最后一件事是许可证文件时间戳,但我对 VS 或 CMake 的了解还不够多,无法进行此设置。
你说你想运行该文件在你构建之后。 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
)
自定义命令将运行可执行文件(并在必要时首先构建它)。自定义目标将驱动自定义命令 - 它取决于命令的输出,因此当构建目标时,它将需要构建其依赖项,从而导致自定义命令运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)