Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';s CMAKE_CXX_标志和可用的 我做C++已经有很长时间了,但是我来自Windows的.< /P>_C++_Linux_Cmake_Cross Compiling - Fatal编程技术网

什么';s CMAKE_CXX_标志和可用的 我做C++已经有很长时间了,但是我来自Windows的.< /P>

什么';s CMAKE_CXX_标志和可用的 我做C++已经有很长时间了,但是我来自Windows的.< /P>,c++,linux,cmake,cross-compiling,C++,Linux,Cmake,Cross Compiling,我收到了一个使用CMake的项目。我在谷歌上到处搜索,想学它 我运行cmake. 我假设它总是查找CMakeLists.txt并生成makefile 这会创建更多的cmake文件和make文件。 然后我被指示运行makepackage。 我假设package只是一个目标名称,可以是任何名称 然后我得到错误: c++:错误:无法识别的命令行选项“-mthumb interwork” c++:错误:无法识别的命令行选项“-mfloat abi=hard” c++:错误:无法识别的命令行选项'-mfp

我收到了一个使用CMake的项目。我在谷歌上到处搜索,想学它

我运行
cmake.
我假设它总是查找
CMakeLists.txt
并生成makefile

这会创建更多的cmake文件和make文件。 然后我被指示运行
makepackage
。 我假设
package
只是一个目标名称,可以是任何名称

然后我得到错误:

c++:错误:无法识别的命令行选项“-mthumb interwork”
c++:错误:无法识别的命令行选项“-mfloat abi=hard”
c++:错误:无法识别的命令行选项'-mfpu=neon'
我认为这是因为我正在尝试编译一个不同的体系结构,而不是我现在使用的体系结构。我想所有的cmake文件都会为我正确设置。我还假设没有什么是专有的

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

SET(CMAKE_CXX_标志“-march=armv7-a-mthumb互通-mfloat abi=hard-mfpu=neon-mtune=cortex-a9-std=c++11-O3”)
如果我看一下官方的cmake文档,它说,我引用 “所有生成类型的标志。”…不是很有帮助

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

问题是:
为什么这些标志无法识别?

在Linux世界中,通常假定不需要按名称指定编译器;而是安排
c++
引用编译器。这可能涉及设置路径、创建shell别名或符号链接

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

然而,CMakeLists.txt文件在很大程度上假设它是用于GCC的。不要为此责备CMake。CMake是工具,CMakeLists.txt是项目特定的说明。这是创建特定CMakeLists.txt文件的人的问题


没有简单的解决办法。有一种真正的可能性是,
gcc
-mfpu=neon
选项对于该程序是必需的,任何人都可以猜测您在其他编译器上需要什么。

亲爱的投票者。也许你想详细说明你否决一个完全合法的问题的理由,在这个问题上,你所做的努力是被描述和明显的,这样海报就能形成一个更好的问题?否则,我们将再次发布完全相同的内容。这个问题似乎是一场角逐。问题或问题是什么并不明显。好的,编辑成一个黑白问题。由于调用了错误的编译器,无法识别标志。您是否尝试过
使包VERBOSE=1
?这将向您显示命令行调用。您可能需要执行类似于
CXX=cmake
VERBOSE=1的操作!标准makefile假定编译器由
CXX
变量指定-这是指定交叉编译器的正常方式。