c++ - 在 CMake 中添加全局编译标志
问题描述
我正在编辑其他人制作的 CMakeLists.txt 文件。我试图摆脱编译项目时产生的一些警告。
通常我只是添加set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MY_FLAGS}")
我需要添加的任何标志,它工作正常,但对于这个项目,它只是不工作。警告仍然出现。我尝试了几种替代方法,但没有。
什么可能导致问题?
cmake_minimum_required(VERSION 3.1)
project(PBS)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
option(LIBIGL_USE_STATIC_LIBRARY "Use libigl as static library" OFF)
option(LIBIGL_WITH_ANTTWEAKBAR "Use AntTweakBar" OFF)
option(LIBIGL_WITH_CGAL "Use CGAL" OFF)
option(LIBIGL_WITH_COMISO "Use CoMiso" OFF)
option(LIBIGL_WITH_CORK "Use Cork" OFF)
option(LIBIGL_WITH_EMBREE "Use Embree" OFF)
option(LIBIGL_WITH_LIM "Use LIM" OFF)
option(LIBIGL_WITH_MATLAB "Use Matlab" OFF)
option(LIBIGL_WITH_MOSEK "Use MOSEK" OFF)
option(LIBIGL_WITH_OPENGL "Use OpenGL" ON)
option(LIBIGL_WITH_OPENGL_GLFW "Use GLFW" ON)
option(LIBIGL_WITH_OPENGL_GLFW_IMGUI "Use ImGui" ON)
option(LIBIGL_WITH_PNG "Use PNG" OFF)
option(LIBIGL_WITH_PYTHON "Use Python" OFF)
option(LIBIGL_WITH_TETGEN "Use Tetgen" OFF)
option(LIBIGL_WITH_TRIANGLE "Use Triangle" OFF)
option(LIBIGL_WITH_VIEWER "Use OpenGL viewer" ON)
option(LIBIGL_WITH_XML "Use XML" OFF)
if (NOT LIBIGL_FOUND)
find_package(LIBIGL REQUIRED QUIET)
endif()
add_subdirectory(0_dummy)
add_subdirectory(1_cannonball)
add_subdirectory(2_spring)
add_subdirectory(3_spinning)
add_subdirectory(4_gyro)
# Custom commands
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
add_compile_options ( -Wno-reorder )
add_definitions ( -Wno-unknown-pragmas )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare")
编辑:
我发现在其中一个子目录中添加标志适用于该子目录(例如 in 3_spinning/CMakeLists.txt
)。有没有办法全局设置标志?
解决方案
结论:在当前目录和命令之后包含的所有包含目录add_compile_options
上工作。但是,设置似乎只适用于当前目录。但是不知道为什么,因为正如评论者 Tsyvarev 所说,它应该与前两种方法具有相同的范围。add_definitions
CMAKE_CXX_FLAGS
基本上,像这样移动线条:
[...]
# Custom commands
add_compile_options ( -Wno-reorder )
add_definitions ( -Wno-unknown-pragmas )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare")
add_subdirectory(0_dummy)
add_subdirectory(1_cannonball)
add_subdirectory(2_spring)
add_subdirectory(3_spinning)
add_subdirectory(4_gyro)
我不再收到警告-Wreorder
,-Wunknown-pragmas
但我仍然收到-Wsign-compare
警告。
推荐阅读
- python - 无论如何将数字放入字典并随机选择它们并在python中完成随机数学问题?
- scala - Ordering.by(_.toLowerCase) 如何在 Scala 的 TreeMap 中进行不区分大小写的查找?
- python - 绝对价值计划
- azure - 如何根据 set_facts 将多个 ansible 条件合并为一个
- sql - 如何在子查询中使用 INNER JOIN 和 UNION?
- swift - 如何使用不同的变量名快速调用模板?
- python - 将字典附加到列表中会创建重复项
- node.js - 为什么在节点中插入数据后没有正确响应?
- android - 为什么 viewPager 方法中的动画不起作用?
- matlab - 在 Octave 中比较具有不同编码的文件名