【问题标题】:Why CMake generate Makefile without CMAKE_CXX_FLAGS?为什么 CMake 在没有 CMAKE_CXX_FLAGS 的情况下生成 Makefile?
【发布时间】:2017-12-08 11:10:05
【问题描述】:

这是我的完整 CMakeLists.txt 文件:

set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wshadow")

set(PROJECT sample)
project(${PROJECT})

set(HEADERS
    Main.h
)
set(SOURCES 
    Main.cpp
)

# Add souce file to project for compile
add_executable (${PROJECT} ${HEADERS} ${SOURCES})

target_link_libraries( ${PROJECT} )

但是,在 Makefile 中,我不会从 CMAKE_CXX_FLAGS 中寻找子字符串“-Wall”和其他选项。

为什么?

【问题讨论】:

    标签: c++ makefile cmake flags


    【解决方案1】:

    CMAKE_CXX_FLAGS 变量最初是使用project() 命令设置的。在project() 命令之后移动set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ...")。

    来自CMake Toolchains - Languages 文档:

    语言由project() 命令启用。通过调用project() 命令设置特定语言的内置变量,例如CMAKE_CXX_COMPILER、CMAKE_CXX_COMPILER_ID 等。如果顶层 CMakeLists 文件中没有项目命令,则会隐式生成一个。默认启用的语言是C 和CXX。

    参考文献

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2013-03-05
    相关资源
    最近更新 更多