在 CMake 中添加全局编译标志
Adding global compile flags in 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")
编辑:我发现在其中一个子目录中添加标志适用于该子目录(例如在3_spinning/CMakeLists.txt
中(。没有办法在全球范围内设置标志吗?
结论:add_compile_options
和add_definitions
处理当前目录以及命令后包含的所有目录。但是,设置CMAKE_CXX_FLAGS
似乎仅适用于当前目录。但是不知道为什么,因为正如评论者Tsyvarev所说,它应该与前两种方法具有相同的范围。
基本上,像这样移动线条:
[...]
# 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
警告。
您在最后添加标志,扫描子文件夹后,您必须首先设置标志,然后浏览您的子文件夹。
相关文章:
- 即使使用调试编译标志,表达式也是"optimized out"
- 在 CMake 中添加全局编译标志
- 如何在 clang 的自动会议中检查支持编译标志
- CMake:如何在Visual Studio环境中将依赖于模式的编译标志传递给nvcc
- CMake:替换接口目标的编译标志
- GCC - 包含编译标志的宏
- 覆盖单个文件的编译标志
- 通过宏定义编译标志(C++11 和优化)
- 如何强制 Netbeans 只使用 -ggdb 编译标志而不使用它,同时在 Makefile-Debug.mk 中自动发
- 覆盖来自 R 的C++编译标志的系统默认值
- 是否可以在编译时间作为宏上检测GCC编译标志
- 如何将编译标志 -g 添加到 make 文件
- "-Bdynamic"编译标志有什么作用?
- 如何在cpp文件(C++)中设置编译标志
- Qmake 不使用 stdc++11 编译标志
- 如何在 CMake 文件中添加链接器或编译标志
- CMake-删除单个翻译单元的编译标志
- 添加 -fPIC 编译标志后"Recompile with -fPIC"错误仍然存在
- 在不同的编译单元中使用不同的编译标志编译相同的头
- c++链接和编译标志