什么';s CMAKE_CXX_标志和可用的 我做C++已经有很长时间了,但是我来自Windows的.< /P>
我收到了一个使用CMake的项目。我在谷歌上到处搜索,想学它 我运行什么';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.
我假设它总是查找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
变量指定-这是指定交叉编译器的正常方式。