我想使用英特爾編譯器icc(或icpc)與基於CMake的項目(在Linux上它是值得的)。我當然可以在調用cmake時導出CXX變量,例如像通過配置選項使用CMake和icc的推薦方法?
CXX=icpc cmake ../
這工作正常。然而,我想通過自定義選項來提供此選項。爲此,我解析自定義選項,例如
cmake -DMY_COMPILER_OPTION=Intel ..
爲
IF (MY_COMPILER_OPTION STREQUAL "Intel")
MESSAGE(STATUS "** Compiling with Intel settings **")
SET(CMAKE_CXX_COMPILER "icpc")
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -w")
SET(CMAKE_CXX_FLAGS_DEBUG "-g")
ENDIF()
,並與一些編譯器標誌設置CMAKE_CXX_COMPILER
在一起。這也適用,但是有一個重要的「但是」。
我也想爲我的代碼使用選項-ipo
(interprocedural優化)編譯時與ICC加我需要編譯過程中的靜態庫。爲了這個工作,我需要使用英特爾的(我猜也是xilink
)。
cmake的實際上提供了一個特殊的屬性此
set_property(TARGET mytarget PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)
然而,這似乎只工作在正確的編譯器已經通過環境變量(當時xiar使用)設置。當通過CMAKE_CXX_COMPILER
設置編譯器時,該屬性將被忽略。
有沒有另一種方法來做到這一點?一些推薦的方式?或者至少是解決方法?
是,CMake的喜歡把編譯器作爲一個不變。 – mabraham 2013-04-14 15:01:54