我的cmake文件:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_COMPILER "gcc-7")
project(invertedindex)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wconversion -O0")
set(SOURCE_FILES main.cpp inverted_index.hpp params.hpp)
add_executable(invertedindex ${SOURCE_FILES})幸运的是,我查看了生成的编译器命令
/usr/local/bin/gcc-7 -Wall -Wextra -Wconversion -O0 -std=gnu++1z -o CMakeFiles/invertedindex.dir/main.cpp.o -c /Users/adam/school/cpp/invertedindex/main.cpp看到了-std=gnu++1z。我没有兴趣研究长时间的工作,那是什么,为什么它会在那里当我
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)它怀疑-std=gnu++1z不是一个稳定、完成库或其他东西。但是,gcc 7支持c++17标准的大部分功能。
当我不知道它应该可以工作时,我手动将生成的命令参数替换为-std=gnu++17,它就工作了。怎么了?我如何让它在cmake中工作?
发布于 2018-04-29 00:13:32
我使用的是第三种方法,它被标记为how to specify compiler in cmake。第一种方法是设置CXX环境变量不起作用(编译器是一些Mac g++)。所以我尝试了第二种方法--在cmake args -D CMAKE_C_COMPILER=gcc-7中指定编译器,它起作用了。即使再次生成c++1z参数。我不明白,但在我崩溃之前我是很好的。
/usr/local/bin/gcc-7 -Wall -Wextra -Wconversion -O0 -g -std=gnu++1z -o CMakeFiles/invertedindex.dir/main.cpp.o -c /Users/adam/school/cpp/invertedindex/main.cpphttps://stackoverflow.com/questions/50078146
复制相似问题