J'ai remarqué que CMake est installé avec de nombreux modules tels que le compilateur IAR:Comment utiliser un compilateur différent avec CMake (IAR)?
https://github.com/Kitware/CMake/blob/master/Modules/Compiler/IAR.cmake
Dans une question précédente, j'ai demandé comment charger ce module particulier. La réponse était simplement d'ajouter:
set(CMAKE_C_COMPILER iccarm.exe)
sur mon CMakeLists.txt
.
Malheureusement, j'ai remarqué que ce n'est pas suffisant car le IAR.cmake
n'est jamais vraiment utilisé. Avec les éléments suivants CMakeLists.txt
:
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}")
Je reçois cette sortie:
-- 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
Où IARARM_CMAKE_LOADED
est pas défini et CMAKE_C_COMPILE_OBJECT
n'a pas l'option --silent
définie here
Comment puis-je savoir CMake utiliser le module IAR?
Eh bien, je commence à comprendre aussi. La modification avec le '--silent' a été ajoutée il y a 3 mois donc c'est un changement assez récent et mon' CMake' pour windows était 3.9.1, pas 3.9.2. Comme je regardais les sources directement à partir de GitHub (et de CMake sur mon installation de Cygwin qui était 3.9.2), j'ai été confus. – nowox
'--trace-expand' m'a beaucoup aidé! – nowox
Je suis toujours confus cependant. Le [d8e6cd9ed] (https://github.com/Kitware/CMake/commit/d8e6cd9ed8bfee9073cff26cb654bc01e653b0b9) que vous avez fait ne semble pas faire partie de ** v3.9.2 **, mais votre modification est juste après ** v3.9.0- rc4 **. C'est comme une impasse. Comment est-il organisé, le dépôt Git est plein de bruine 'Merge branch' release-3.9'' partout. – nowox