相关疑难解决方法(0)

通过配置选项推荐使用CMake和icc的方法?

我想将英特尔编译器icc(或icpc)与基于CMake的项目一起使用(在Linux上用于它的价值).我当然可以在调用cmake时导出CXX变量,例如

CXX=icpc cmake ../
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,我想通过自定义选项提供此选择.为此,我解析自定义选项,例如

cmake -DMY_COMPILER_OPTION=Intel ..
Run Code Online (Sandbox Code Playgroud)

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 ()
Run Code Online (Sandbox Code Playgroud)

CMAKE_CXX_COMPILER与一些编译器标志一起设置.这也有效,但有一个重要的"但是".

我还想在使用-ipoicc编译时使用选项(过程间优化)代码,我需要在构建过程中编译静态库.要做到这一点,我需要使用英特尔xiar(xilink我也猜).

cmake实际上为此提供了一个特殊的属性

set_property(TARGET mytarget PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)
Run Code Online (Sandbox Code Playgroud)

但是,当通过环境变量设置编译器(然后使用xiar)时,这似乎只能正常工作.通过CMAKE_CXX_COMPILER此属性设置编译器时将被忽略.

还有另一种方法吗?一些推荐的方式?或者至少是解决方案?

build cmake icc

4
推荐指数
2
解决办法
1万
查看次数

标签 统计

build ×1

cmake ×1

icc ×1