【发布时间】:2019-11-27 02:50:10
【问题描述】:
解决方案:我使用了Sander De Dycker 的解决方案,刚刚更新了我的 gcc 版本,效果很好。
首先,我想指出我对 CMake 或 shell 脚本一无所知。
在编译 C++ 文件时,避免每次都输入 -std=c++11 的最佳方法是什么?
(例如 g++ -std=c++11 file.c)。
-
我在网上找到了一个解决方案,但似乎没有用或者我不知道如何正确使用它:
https://github.com/openalpr/openalpr/issues/528
把这一行:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
CMakeLists.txt的第一行位于src目录之后
这个
CMakeLists.txt文件不存在,所以我创建了它。这可能是第一个错误。此外,我的假设是我可以只输入g++ file.c,但也许我必须输入其他内容? 我的主管告诉我,最有效的方法是使用我不熟悉的 shell 脚本。对这种方法有什么建议吗?
【问题讨论】:
-
如果您没有
CMakeLists.txt文件,那么您不太可能使用 CMake。那么,如果你根本不使用 CMake,为什么还要询问 CMake(并使用cmake)标签? -
gcc 6 将默认值更改为 gnu++14(即带有扩展的 c++14),因此切换到更高的 gcc 版本将允许您避免添加该标志,只要您也可以启用扩展(以及比您实际想要的更高的 C++ 版本)。
-
最好的方法是使用 IDE。
-
@Tsyvarev 因为第一个解决方案提到了
CMakeLists.txt,所以包含 CMake 标记对我来说很有意义。 @SanderDeDycker 谢谢,我会看看这个。 @MichaelChourdakis 对 Ubuntu 有什么好的建议吗? -
对于单一来源和小型项目,我同意你的主管。只需使用您常用的选项设置几个变量,例如
cflags="-Wall -Wextra -pedantic -Wshadow"然后std="-std=c++11"然后提供您的文件名以作为参数进行编译并调用g++ $cflags $std -o "${1%.*}" "$1"以使用与您的.cpp文件命名相同的可执行文件进行编译——没有.cpp(您可以使用${@:2}将任何其他参数添加到编译字符串的末尾)
标签: c++ shell c++11 ubuntu cmake