2013-07-23 63 views
1

我在RHEL5上使用模塊,並在我的機器上安裝了各種版本的編譯器/ binutils。因此,我最終定義了指向我的工具的環境變量,並相應地更新了路徑,因此RHEL5附帶的舊工具不在圖片中。CMAKE使用環境變量而不將它們作爲命令行參數傳遞?

是否有一個簡單的方法讓cmake加載相應的環境變量?

例如在我的環境:

CMAKE_CXX_COMPILER=/some/other/compiler 
CMAKE_LINKER=/some/other/linker 

有沒有辦法有cmake的搶這些不通過命令行傳遞它們的參數?

在我的CMakeLists.txt我下面沒有工作

SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER}) 

毫不奇怪下面也沒有工作:

IF($ENV{CMAKE_CXX_COMPILER}) 
    SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER}) 
    MESSAGE("CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER}") 
ENDIF() 

也許這是一個語法問題,或者不正確的地方更新這樣一個cmake變量? 當我通過命令行傳遞時(例如-DCMAKE_CXX_COMPILER = $ {CMAKE_CXX_COMPILER}),它確實有效,但我不想這樣做。

謝謝

+0

逗號不應該在那裏(在任何一種情況下)。此外,編譯器設置是CMake中的特定野獸。你會發現'$ ENV {XYZ}'正常工作得很好。 – Angew

回答

1

沒關係。 這是一個語法錯誤:SET(CMAKE_CXX_COMPILER, $ENV{CMAKE_CXX_COMPILER})不應該有逗號。正確的語法是:

SET(CMAKE_CXX_COMPILER $ENV{CMAKE_CXX_COMPILER}) 
相關問題