2011-11-03 29 views
1

我有一個代碼需要複雜的參數輸入。所以我的設計是編寫一個編譯器,將更簡單的輸入編譯爲C++代碼,然後將C++代碼編譯到大型項目中。現在問題是編譯器本身是用C/BISON編寫的,我需要在生成C++代碼之前編譯它。由於這兩部分代碼都是使用CMake編寫的,是否可以讓CMake進行兩步編譯,即編譯編譯器,然後調用編譯器生成C++代碼,然後編譯生成的C++代碼?CMake中調用可執行生成

回答

2

是的,這是可能的。你可以做這樣的事情:

add_executable(compiler compiler.c) 
add_custom_command(OUTPUT complicated.cpp COMMAND compiler DEPENDS compiler.c) 
add_executable(main_program complicated.cpp) 

這建立您的compilercompiler.c,然後補充說,使用compiler產生complicated.cpp自定義命令。最後,從生成的代碼構建main_program

add_custom_command有一些more optional parameters,例如,爲compiler提供命令行參數。如果您希望在對編譯器進行更改時重新生成complicated.cpp,則需要將編譯器源文件作爲自定義命令的依賴項(即DEPENDS compiler.c)添加。