2013-06-04 18 views
1

使用CMake,如何選擇要使用的shell?我的默認設置爲sh,但我需要從我的.bashrc中加載​​一些環境變量,我猜想更改shell是最好的選擇。CMake:如何選擇不同的shell

實際上,我想設置clang++作爲C++編譯器,具有以下指令:

set (CMAKE_CXX_COMPILER "clang++") 

但是當我嘗試編譯代碼時,所使用的shell是sh,並沒有找到clang++,因爲我通過使二元可見以下export,在我的.bashrc:

export PATH="${PATH}:~/llvm/Debug+Asserts/bin/" 

以下是錯誤,確認sh找不到clang++二進制:

$ make 
[100%] Building CXX object CMakeFiles/floyd-warshall.dir/main.cpp.o 
/bin/sh: 1: clang++: not found 
make[2]: *** [CMakeFiles/floyd-warshall.dir/main.cpp.o] Error 127 
make[1]: *** [CMakeFiles/floyd-warshall.dir/all] Error 2 
make: *** [all] Error 2 
+0

這很奇怪......看起來不像CMake錯誤消息。你能發佈完整的錯誤日誌嗎? – Guillaume

+1

嘗試執行'cmake'的shell中哪個clang ++'。該錯誤可能顯示出來,因爲clang ++不在執行'cmake'的shell的路徑中。 – Samveen

+0

@Samveen Weird,''找不到'clang ++',儘管我可以直接用'clang ++'執行它。我的意思是,當前會話推測'clang ++',並正確執行。 – Rubens

回答

1

你不應該強制C++編譯器這樣在你的CMake文件(起初我還以爲你用一個工具鏈文件)。刪除該行,讓CMake自己查找編譯器。在調用cmake之前使用clang ++設置一些環境變量。例如:

export CC=clang 
export CXX=clang++ 
cmake /path/to/your/project 
make 
+1

是的,這是我發現Google搜索的解決方案,但我認爲除了在我的.bashrc中添加'export'之外,還有其他方法。我正在考慮更換shell,從'sh'到'bash';但猜猜可能沒有更好的解決方案。 – Rubens

+1

另一個解決方案是使用工具鏈文件:在toolchain.cmake文件中移動「set(CMAKE_CXX_COMPILER clang ++)」語句,然後調用cmake/path /到/ your/project -DCMAKE_TOOLCHAIN_FILE =/path/to/toolchain.cmake – Guillaume