我是 CMake 新手,我正在尝试为现有项目创建 CMake,该项目必须在多个 Linux 和 Windows 计算机上交叉编译 ARM 代码,因此编译器的硬编码路径不是一个选项。 到目前为止,编译器的路径已添加到每个用户路径中,因此您只需从控制台调用armcc即可执行正确的编译器版本。 我还没有找到像我尝试过的 CMake 那样指定编译器的方法:
SET(CMAKE_C_COMPILER "armcc")
- 它返回:CMAKE_C_COMPILER: armcc 不是完整路径,未在 PATH 中找到。find_program(CMAKE_C_COMPILER NAMES armcc)
- 它总是返回 /usr/bin/cc
我确信第一条消息不正确,因为 armcc 的路径位于 PATH 变量中。我使用的是 cmake 版本 3.6.2。
最佳答案
这在 CMake FAQ 中有详细说明。 :
方法一:使用环境变量
对于 C 和 C++,设置 CC
和 CXX
环境变量。这个方法
不保证适用于所有发电机。 (具体来说,如果您是
尝试设置 Xcode 的 GCC_VERSION
,此方法会使 Xcode 感到困惑。)
例如:
CC=gcc-4.2 cmake -G "Your Generator" path/to/your/source
方法二:使用cmake -D
将适当的CMAKE_FOO_COMPILER
变量设置为有效的编译器
使用 cmake -D
在命令行上指定名称或完整路径。
例如:
cmake -G "Your Generator" -D CMAKE_C_COMPILER=gcc-4.2 path/to/your/source
方法3(避免):使用set()
将适当的CMAKE_FOO_COMPILER
变量设置为有效的编译器
使用 set()
列表文件中的名称或完整路径。这必须完成
在设置任何语言之前(即在任何 project()
之前或
enable_language()
命令)。
例如:
set(CMAKE_C_COMPILER "gcc-4.2")
project("YourProjectName")
我的猜测是,由于您没有提供任何代码并且没有阅读手册,因此您正在尝试在设置语言之后设置编译器。
出于您的目的,我会采纳 CMake 的建议并使用方法 1 或方法 2,因为您不想对路径进行硬编码。
关于CMake:选择编译器的正确方法,无需对其路径进行硬编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54327842/