1. ホーム
  2. cmake

[解決済み] CMakeでコンパイラを指定するには?

2022-03-14 20:15:51

質問

IARコンパイラーを使いたいのですが、どうすればいいですか?CMakeにはすでにこのコンパイラに関するファイルがたくさんありますね。

https://github.com/jevinskie/cmake/blob/master/Modules/Compiler/IAR.cmake

私が読んだところでは、一般的な解決策は、手動ですべてのツールチェインを私の CMakeLists.txt :

set(CMAKE_C_COMPILER iccarm)
set(CMAKE_CPP_COMPILER iccarm)

CMake はどのようにしてこれらの定義を `Modules/Compiler/IAR.cmake" とリンクさせるのでしょうか?

をすればいいと思っていたのですが

include("Modules/Compiler/IAR.cmake")

IARコンパイラを指定する正しい方法は何ですか?

をすると

cmake .

を使おうとしています。 gcc の代わりに、私のIARコンパイラーを使用します。なぜですか?

解決方法は?

特定のコンパイラを選択するには、次のようにいくつかの解決策があります。 CMakeウィキ :

方法1:環境変数を使用する

CとC++の場合は CCCXX 環境変数を使用します。この方法は、すべてのジェネレータで動作することを保証するものではありません。(具体的には、もしあなたがXcodeの GCC_VERSION この方法はXcodeを混乱させます)。 例えば

CC=gcc-4.2 CXX=/usr/bin/g++-4.2 cmake -G "Your Generator" path/to/your/source

方法2:cmake -Dを使用する

適切な CMAKE_FOO_COMPILER 変数に有効なコンパイラ名またはフルパスを指定します。 cmake -D . 例えば

cmake -G "Your Generator" -D CMAKE_C_COMPILER=gcc-4.2 -D CMAKE_CXX_COMPILER=g++-4.2 path/to/your/source

方法3(避ける):set()を使用する

適切な CMAKE_FOO_COMPILER 変数に、有効なコンパイラ名か、リストファイルのフルパスを指定します。 set() . これは、言語が設定される前(つまり、すべての project() または enable_language() コマンドを使用します)。 例えば

set(CMAKE_C_COMPILER "gcc-4.2")
set(CMAKE_CXX_COMPILER "/usr/bin/g++-4.2")

project("YourProjectName")

3番目の方法を避けるべき理由がWikiに書かれていないのですが......。