繁体   English   中英

强制使用 cmake 提供最新的 gcc

[英]Forcing latest gcc available with cmake

我正在将一个小应用程序部署到需要编译的几个不同系统(mac、linux、linux64)。 我想告诉 cmake 特定系统中可用的最新 gcc。 例如,Mac 10.6 有 gcc 4.0 和 gcc 4.2(默认)。 但是有些用户也通过 MacPorts 安装了 gcc 4.4(它不是默认的)。 在这种情况下,我希望 cmake 使用 gcc44。 在其他 linux 系统中,最新的 gcc 是 4.4 或 4.5 实现这一点的更健壮的方法是什么?

谢谢,

CMake 在检测到要使用的 C 和 C++ 编译器时会使用环境变量CCCXX 例如,如果这些变量指向 clang,它将默认使用 clang:

$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang++
$ cmake ..
-- The C compiler identification is Clang
-- The CXX compiler identification is Clang
-- Check for working C compiler: /usr/bin/clang
-- Check for working C compiler: /usr/bin/clang -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++
-- Check for working CXX compiler: /usr/bin/clang++ -- works
...

您可以将这些定义为指向首选编译器的系统范围的环境变量,也可以编写一个小的 shell 包装器脚本来测试多个编译器的可用性并在调用 cmake 之前相应地设置变量。

我必须将它添加到我的 CMakeLists.txt 才能工作:

  if($ENV{CXX})
    set(CMAKE_CXX_COMPILER $ENV{CXX} CACHE FILEPATH "CXX Compiler")
  endif()
  if($ENV{CC})
    set(CMAKE_CC_COMPILER $ENV{CC} CACHE FILEPATH "CC Compiler")
  endif()

另一个技巧是确保使用你想要的 GCC 是在 CMake 之前做这样的事情: export PATH=/path/to/my/gcc:$PATH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM