2015-06-23 60 views
4

我有以下cmake的結構cmake的建立在不同的目錄中生成多個目標

CMakelists.txt 
toolchain.cmake 
folder1 
    ----CMakelists.txt 
folder2 
    ----CMakelists.txt 
etc.. 

我的第一個級別的CMakeLists.txt包括其他subdirectorys。現在我想爲不同的目標構建我的代碼。

手動方式是

1. 
mkdir hostBuild 
cd hostBuild 
cmake .. 
make 
2. 
mkdir crossBuild 
cd crossBuild 
cmake .. --DCMAKE_TOOLCHAIN_FILE=toolchain.cmake 
make 

是否有可能,這個過程可以自動運行?

例如,我只需要運行cmake。在我的第一級

是這樣的事情是可能的?

回答

6

否。建議只是將手動步驟放入shell腳本中。

CMake一次只能處理一個編譯器/編譯環境(如果切換編譯器,您需要一個不同的二進制輸出目錄)。

確實包含SET(CMAKE_SYSTEM_NAME ...)的工具鏈文件確實改變了配置/生成過程的整個結果。

有關什麼CMake的不看細節:CMake: In which Order are Files parsed (Cache, Toolchain, …)?

而且你可以利用一些CMake的命令行選項,在你的shell腳本:

if [ ! -d hostBuild ]; then 
    cmake -E make_directory hostBuild 
    cmake -E chdir hostBuild cmake .. 
fi 
cmake --build hostBuild 
... 
相關問題