相关疑难解决方法(0)

如何在CMake中指定编译器?

我想使用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 iar

7
推荐指数
4
解决办法
9970
查看次数

CMake 命令行定义不会延续到工具链文件

我有一个 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)

c++ cmake cross-compiling

5
推荐指数
1
解决办法
1909
查看次数

cmake:指定编译器的问题

我有这个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)

windows gcc makefile g++ cmake

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

cmake ×3

c++ ×1

cross-compiling ×1

g++ ×1

gcc ×1

iar ×1

makefile ×1

windows ×1