代码之家  ›  专栏  ›  技术社区  ›  Christopher Pisz

什么是CMAKE_CXX_标志,哪些是可用的

  •  0
  • Christopher Pisz  · 技术社区  · 6 年前

    我做C++已经有很长一段时间了,但是我来自Windows的国度。

    我得到了一个使用CMake的项目我在网上搜索了一下想学。

    我跑 cmake . 我想它总是在寻找 CMakeLists.txt 生成生成文件。

    这将创建更多的cmake文件并生成文件。 然后我奉命逃跑 make package 是的。 我想 package 只是一个目标名称,可以是任何东西。

    然后我得到错误:

    c++: error: unrecognized command line option ‘-mthumb-interwork’
    c++: error: unrecognized command line option ‘-mfloat-abi=hard’
    c++: error: unrecognized command line option ‘-mfpu=neon’
    

    我认为这是因为我正在尝试为一个不同的架构编译,而不是我正在使用的架构。我想所有的cmake文件都会为我正确设置我也认为没有什么是专有的。

    我在CMakeLists.txt中看到了这一行

    SET(CMAKE_CXX_FLAGS "-march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 -std=c++11 -O3")
    

    如果我看一下官方的cmake文档,上面说,我引用了 “所有生成类型的标志。” ……不是很有帮助

    我认为它没有使用正确的编译器,但我也看不到在CMakeLists.txt中编译器的指定位置。

    问题是: 为什么这些旗子会被认出来?

    1 回复  |  直到 6 年前
        1
  •  4
  •   MSalters    6 年前

    在Linux世界中,通常假设您不需要按名称指定编译器,而是安排 c++ 引用编译器。可能需要设置 PATH ,创建外壳别名或符号链接。

    显然你已经这样做了,因为你的编译器正在被调用并且抱怨标准的GCC标志-很明显你的编译器不是GCC。

    不过,CMakeLists.txt文件在很大程度上假设是针对GCC的别怪CMakeCMake是工具,CMakeLists.txt是项目特定的指令这是谁创建了特定的CMakeLists.txt文件的问题。

    没有简单的解决办法很有可能 -mfpu=neon 选择权 gcc 对程序来说是必要的,任何人都可以猜到你在另一个编译器上需要什么。