我正在努力使用add_custom_command.让我详细解释一下这个问题.
我有这些cxx文件和hxx文件.我在每个脚本上运行一个perl脚本来生成某种翻译文件.该命令看起来像
perl trans.pl source.cxx -o source_cxx_tro
Run Code Online (Sandbox Code Playgroud)
同样对于header.hxx文件也是如此.
所以我最终会得到一些多个命令(每个命令用于一个文件)
然后我在这些命令生成的输出上运行另一个perl脚本(source_cxx_tro,header_hxx_tro)
perl combine.pl source_cxx_tro header_hxx_tro -o dir.trx
Run Code Online (Sandbox Code Playgroud)
dir.trx是输出文件.
我有这样的事情.
Loop_Over_All_Files()
Add_Custom_Command (OUTPUT ${trofile} COMMAND perl trans.pl ${file} -o ${file_tro})
List (APPEND trofiles ${file_tro})
End_Loop()
Add_Custom_Command (TARGET LibraryTarget POST_BUILD COMMAND perl combine.pl ${trofiles} -o LibraryTarget.trx)
Run Code Online (Sandbox Code Playgroud)
我期望在构建post构建目标时,首先构建trofiles.但事实并非如此.$ {trofiles}没有构建,因此post build命令以失败告终.有什么办法可以告诉POST_BUILD命令取决于以前的自定义命令吗?
有什么建议 ?
谢谢,苏里亚
我有一个命令行工具,应该在 CMake 创建我的 .sln 文件后运行。有没有办法使用 CMake 做到这一点?
在 CMakeLists.txt 的末尾使用 execute_process(COMMAND ..) 没有帮助,因为这是在 Configure 步骤之后执行的,但是 .sln 文件是在生成步骤中创建的。
非常感谢!
我有一个用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的了解还不够.