我有一个代码需要复杂的参数输入。所以我的设计是编写一个编译器,编译一个更简单的C ++代码输入,然后将C ++代码编译成大项目。现在的问题是编译器本身是用C / BISON编写的,我需要在生成C ++代码之前编译它。由于代码的两部分都是使用CMake编写的,是否可以让CMake进行两步编译,即编译编译器,调用编译器生成C ++代码,然后编译生成的C ++代码?
答案 0 :(得分:2)
是的,有可能。你可以这样做:
add_executable(compiler compiler.c)
add_custom_command(OUTPUT complicated.cpp COMMAND compiler DEPENDS compiler.c)
add_executable(main_program complicated.cpp)
这会从compiler
构建您的compiler.c
,然后添加一个使用compiler
生成complicated.cpp
的自定义命令。最后,main_program
是根据生成的代码构建的。
add_custom_command
有一些more optional parameters,例如向compiler
提供命令行参数。如果希望在对编译器进行更改时重新生成DEPENDS compiler.c
,则需要将编译器源文件添加为自定义命令的依赖项(即complicated.cpp
)。