在构建库之前,让CMake在项目中执行目标

时间:2011-03-21 23:57:47

标签: c++ build cmake

我正在使用CMake构建我的C ++项目,它有多个可执行文件和一个库(同一项目的所有部分)。一切正常,但我的一个可执行文件是一个代码生成器,它创建了一些库类。我已经让所有代都工作了但是在构建库之前无法弄清楚如何调用这个可执行文件(codegen)。我在Linux环境中。希望有人能回答这个问题。

1 个答案:

答案 0 :(得分:17)

CMakeLists.txt

首先,定义您的可执行文件:

add_executable(marks-code-generator gen.cpp)

然后,定义一个自定义命令来生成源:

add_custom_command(OUTPUT generated.cpp generated.hpp
                   COMMAND marks-code-generator ARGS args here maybe
                   MAIN_DEPENDENCY input-file.in
                   DEPENDS marks-code-generator
                   COMMENT here we go!
                   VERBATIM)

选项VERBATIM可确保正确完成特定于平台的转义。 {| 1}}将在make执行时打印出来,提供类似COMMENT的内容。

最后,在真实程序的源列表中命名生成的源:

[ 66%] here we go!