簡體   English   中英

如何讓 CMake 在 Mac OS X 上使用 GCC 而不是 Clang?

[英]How can I make CMake use GCC instead of Clang on Mac OS X?

我找不到任何關於它的信息,但只能反過來(例如,如何設置 CMake 以使用 clang)。

我已經使用 brew 安裝了 gcc-4.8,設置了所有依賴項、頭文件等,現在 CMake 拒絕使用 gcc。

我已經使用別名和實際條目設置了我的 bash 配置文件:

export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
alias gcc='gcc-4.8'
alias cc='gcc-4.8'
alias g++='g++-4.8'
alias c++='c++-4.8'

然而,CMake 頑固地拒絕使用 gcc,而是恢復為 clang:

air:build alex$ cmake -DCMAKE_BUILD_TYPE=DEBUG ..
-- The C compiler identification is Clang 5.1.0
-- The CXX compiler identification is Clang 5.1.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works

CMake 不(總是)聽CCCXX 而是使用CMAKE_C_COMPILERCMAKE_CXX_COMPILER

cmake -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++ ...

另請參閱文檔

或者,您可以提供一個工具鏈文件,但在這種情況下這可能有點過頭了。

當前版本的 CMake 不像人們期望的那樣尊重 CC 和 CXX 環境變量。 特別是如果它們是編譯器二進制文件的絕對路徑,它們似乎被忽略了。 在我使用新編譯的 cmake 3.7.1 的系統上,我必須執行cmake -H. -Bbuild -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX cmake -H. -Bbuild -DCMAKE_C_COMPILER=$CC -DCMAKE_CXX_COMPILER=$CXX

正如其他人所說,在您的 CMakeLists.txt 中強制選擇編譯器並不是一個好主意,但是如果您的用例需要這樣做,您可以這樣做:

cmake_minimum_required(VERSION 3.5) # Or whatever version you use

# THIS HAS TO COME BEFORE THE PROJECT LINE
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")
# THIS HAS TO COME BEFORE THE PROJECT LINE

project(my_project VERSION 0.0.0 LANGUAGES C CXX)

在這種情況下,如果未找到指定的編譯器,cmake 將失敗。 請注意,您必須在項目行之前設置這些變量,因為此命令用於查找和配置編譯器。

我猜 OP 中的案例是在 macOS 上運行的,真正的問題是/usr/bin/gcc/usr/bin/g++默認情況下是clangclang++ (通過在 bash 配置文件中注釋所有“別名”來驗證這一點,重新啟動終端並輸入gcc --version 。)

所以,而不是

cmake .. -DCMAKE_C_COMPILER=/usr/bin/gcc -DCMAKE_CXX_COMPILER=/usr/bin/g++

一個應該使用

cmake .. -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8 -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8

只是補充一點,還有一個 CMake 變量“CMAKE_Fortran_COMPILER”來獲取 GNU Fortran 而不是 clang fortran。 但它似乎在文檔中丟失

cmake -DCMAKE_Fortran_COMPILER=/usr/.../bin/gfortran-6.x.0

使用CCCXX環境變量應該就足夠了,但在 macOS 中沒有“按預期工作”。

但它以這種方式工作,例如:

CXX="gcc-8" CC="gcc-8" cmake ..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM