1
我有一個代碼需要複雜的參數輸入。所以我的設計是編寫一個編譯器,將更簡單的輸入編譯爲C++代碼,然後將C++代碼編譯到大型項目中。現在問題是編譯器本身是用C/BISON編寫的,我需要在生成C++代碼之前編譯它。由於這兩部分代碼都是使用CMake編寫的,是否可以讓CMake進行兩步編譯,即編譯編譯器,然後調用編譯器生成C++代碼,然後編譯生成的C++代碼?CMake中調用可執行生成
我有一個代碼需要複雜的參數輸入。所以我的設計是編寫一個編譯器,將更簡單的輸入編譯爲C++代碼,然後將C++代碼編譯到大型項目中。現在問題是編譯器本身是用C/BISON編寫的,我需要在生成C++代碼之前編譯它。由於這兩部分代碼都是使用CMake編寫的,是否可以讓CMake進行兩步編譯,即編譯編譯器,然後調用編譯器生成C++代碼,然後編譯生成的C++代碼?CMake中調用可執行生成
是的,這是可能的。你可以做這樣的事情:
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
提供命令行參數。如果您希望在對編譯器進行更改時重新生成complicated.cpp
,則需要將編譯器源文件作爲自定義命令的依賴項(即DEPENDS compiler.c
)添加。