2017-09-13 31 views
0

私はcmakeのは、このようなIARコンパイラなどの多数のモジュールをインストールされていることに気付きました:私は、この特定のモジュールをロードする方法を尋ね前の質問でCMake(IAR)で別のコンパイラを使うには?

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

。その答えは、次のように追加するだけでした。

set(CMAKE_C_COMPILER iccarm.exe) 

on my CMakeLists.txt

IAR.cmakeが実際には使用されていないため、残念ながら私は気づいたが、これでは不十分である。 CMakeLists.txt次の場合:

-- The C compiler identification is IAR 
-- Check for working C compiler: C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/arm/bin/iccarm.exe 
-- Check for working C compiler: C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/arm/bin/iccarm.exe -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- IARARM_CMAKE_LOADED= 
-- IAR CMAKE_C_COMPILE_OBJECT=<CMAKE_C_COMPILER> <SOURCE> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> 
-- Configuring done 
-- Generating done 
-- Build files have been written to: C:/Users/Ycr/Home/sandbox/cmake 
IARARM_CMAKE_LOADEDが定義されていない

CMAKE_C_COMPILE_OBJECT--silentオプションは、私はCMakeのを伝えることができますどのようにhere

が定義されていない:

cmake_minimum_required(VERSION 3.6) 

set(CMAKE_SYSTEM_NAME Generic) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

set(CMAKE_C_COMPILER iccarm.exe) 

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 

list(APPEND src src/main.c) 

project("foo" C) 

add_executable(foo ${src}) 

message(STATUS "IARARM_CMAKE_LOADED=${_IARARM_CMAKE_LOADED}") 
message(STATUS "IAR CMAKE_C_COMPILE_OBJECT=${CMAKE_C_COMPILE_OBJECT}") 

私はこの出力を取得しますIARモジュールを使用するには?

答えて

1

私はゆっくりと問題を認識し始めます。

  • CMakeLists.txtファイルでは、コンパイラを定義しないものとします。 cmake -DCMAKE_C_COMPILER=iccarm.exe ... のようなコマンドラインで引数を追加します。CMakeLists.txtファイルが手に入る前に通常コンパイラの検出が行われます。
  • あなたがリンクしているファイルがrelasedビルドには含まれていないので、 CMake 3.10

次回CMakeを呼び出すために使用するバージョンとコマンドラインを追加します。また、--trace-expandのようないくつかのオプションがありますが、それは何が起きるかというアイデアを与えるはずです。

+0

まあ、私も理解し始めています。 3ヶ月前に '--silent'による修正が追加されました。これはかなり最近の変更であり、Windows用の' CMake 'は3.9.1ではなく3.9.1でした。私がGitHubから(そしてCygwinのインストールでCMakeから3.9.2だった)ソースを直接見ていたとき、私は混乱しました。 – nowox

+0

'--trace-expand'は私を大きく助けました! – nowox

+0

私はまだ混乱しました。あなたが作成した[d8e6cd9ed](https://github.com/Kitware/CMake/commit/d8e6cd9ed8bfee9073cff26cb654bc01e653b0b9)は** v3.9.2 **の一部ではないようですが、あなたの変更は** v3.9.0- rc4 **。それは終わりのようです。どのように構成されているのですか?Gitリポジトリはどこでも雑音の多い 'Merge branch 'リリース-3.9'でいっぱいです。 – nowox

関連する問題