我想使用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)
Run Code Online (Sandbox Code Playgroud)
CMake如何将这些定义与`Modules/Compiler/IAR.cmake"联系起来?
我以为我只需要这样做
include("Modules/Compiler/IAR.cmake")
Run Code Online (Sandbox Code Playgroud)
指定IAR编译器的正确方法是什么?
当我做
cmake .
Run Code Online (Sandbox Code Playgroud)
它仍然试图使用gcc而不是我的IAR编译器.为什么?
我有一个 cmake 交叉编译器工具链文件,缩写为:
set(CMAKE_SYSTEM_NAME Linux)
if( DEFINED TC_PATH )
message( STATUS " TC_PATH IS defined. ${TC_PATH}" )
else()
message( FATAL_ERROR " TC_PATH not defined." )
endif()
set(CMAKE_C_COMPILER ${TC_PATH}/usr/bin/i586-linux/i586-linux-gcc )
set(CMAKE_CXX_COMPILER ${TC_PATH}/usr/bin/i586-linux/i586-linux-g++ )
set(CMAKE_LINKER ${TC_PATH}/usr/bin/i586-linux/i586-linux-ld )
Run Code Online (Sandbox Code Playgroud)
我调用 cmake,设置 TC_PATH 以及工具链文件:
~/CMakeTest/output $ cmake -DTC_PATH:PATH=/opt/toolchain -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake ../
Run Code Online (Sandbox Code Playgroud)
看来 cmake 正在多次调用工具链文件。在前两次,TC_PATH 检查成功,但后来,在识别编译器后,它抛出错误:
-- TC_PATH IS defined. /opt/toolchain
-- TC_PATH IS defined. /opt/toolchain
-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C …Run Code Online (Sandbox Code Playgroud) 我有这个CMakeLists.txt文件的问题:
cmake_minimum_required(VERSION 2.6)
SET(CMAKE_C_COMPILER C:\\MinGW\\bin\\gcc)
SET(CMAKE_CXX_COMPILER C:\\MinGW\\bin\\g++)
project(cmake_test)
add_executable(a.exe test.cpp)
Run Code Online (Sandbox Code Playgroud)
用以下方式调用cmake: cmake -G "MinGW Makefiles"
我明白了:
c:\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
CMake Warning (dev) at CMakeFiles/CMakeCCompiler.cmake:1 (SET):
Syntax error in cmake code at
C:/cmake_test/CMakeFiles/CMakeCCompiler.cmake:1
when parsing string
C:\MinGW\bin\gcc
Invalid escape sequence \M
Policy CMP0010 is not set: Bad variable reference syntax is an error. Run
"cmake --help-policy CMP0010" for policy details. Use the cmake_policy
command to set the policy and suppress this …Run Code Online (Sandbox Code Playgroud)