我正在本地进行现有项目。我是该项目的新手,所以我按原样使用提供的make文件。我修改了一些代码,运行了make,并通过了构建。

当我将更改推送到github时,自动的Travis CI构建会检测到编译错误。

在StackOverflow上搜索错误后,我发现这是C++ 11之前的版本中的错误,但C++ 11及更高版本中没有错误。

这意味着我的本地make必须在C++ 11标志打开的情况下进行编译,而在服务器上构建的Travis CI构建时不带该标志。

理想情况下,我希望本地构建条件与服务器构建条件相匹配,以便在推送之前可以检测到任何错误。

在哪里可以看到我的本地make操作传递给GCC的标志,或者还有其他方法可以显式禁用C++ 11编译标志?

最佳答案

假设您有一些all目标,用于构建主要内容:

all: (some dependencies)
    (some commands)

为了确保在构建时使用了哪些标志,可以添加一些虚拟依赖项:
all: (some dependencies) showflags
    (some commands)

showflags:
    @echo "CXXFLAGS=$(CXXFLAGS)"
    @echo "CPPFLAGS=$(CPPFLAGS)"

至少您将能够看到使用了哪些选项。

关于c++ - MAKE的GCC标志从哪里传递?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23511833/

10-10 18:00
查看更多