CMake:选择编译器的正确方法而无需对其路径进行硬编码

时间:2019-01-23 12:58:40

标签: c cmake

我是CMake的新手,我正在尝试为现有项目创建CMake,该项目必须在多台Linux和Windows机器上交叉编译ARM代码,因此不能选择硬编码方式进行编译。 到目前为止,编译器的路径已添加到每个用户路径,因此您只需从控制台调用armcc即可执行正确的编译器版本。 我还没有找到一种方法来指定我尝试过的CMake中的编译器:

  1. protected void btnFileDelete_Click(object sender, EventArgs e) { //Get the button that raised the event Button btn = (Button)sender; //Get the row that contains this button GridViewRow gvr = (GridViewRow)btn.NamingContainer; //Get the Real File Name HiddenField hdnDataId = (HiddenField)gvr.FindControl("hdnRealFileName"); string theFileName = hdnDataId.Value; //Download the file deleteFile(theFileName); } -返回:CMAKE_C_COMPILER: armcc不是完整路径,因此在PATH中找不到。
  2. function [reminder] = mod2div(divident, divisor) % Number of bits to be XORed at a time pick = size(divisor, 2); tmp = divident(1 : pick); while pick < size(divident,2) if int2str(tmp(1)) == '1' tmp = bitxor(divisor, tmp); tmp = [tmp,divident(pick)]; else mi=uint8(zeros(1,pick)); tmp = bitxor(mi, tmp) ; tmp = [tmp,divident(pick)]; end pick = pick + 1; end if int2str(tmp(1)) == '1' tmp = bitxor(divisor, tmp); else mi=zeros(1,pick); tmp = bitxor(mi, tmp) ; end reminder = tmp ; end -它总是返回 / usr / bin / cc

我确定第一条消息不正确,因为armcc的路径在PATH变量中。我正在使用cmake版本3.6.2。

1 个答案:

答案 0 :(得分:1)

这在CMake FAQ中有详细说明:

方法1:使用环境变量

对于C和C ++,设置CCCXX环境变量。这个方法 不能保证适用于所有发电机。 (具体来说,如果您是 尝试设置Xcode的GCC_VERSION,此方法会混淆Xcode。)

例如:

CC=gcc-4.2 cmake -G "Your Generator" path/to/your/source

方法2:使用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,因为您不想对路径进行硬编码。