Добавление глобальных флагов компиляции в CMake - PullRequest
0 голосов
/ 06 октября 2018

Я редактирую файл 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).Нет ли способа установить флаги глобально?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вывод: add_compile_options и add_definitions работают с текущим каталогом и всеми включенными каталогами , которые включены после команды .Однако установка CMAKE_CXX_FLAGS, похоже, работает только в текущем каталоге.Однако не уверен, почему, потому что, как говорит комментатор Цыварев, он должен иметь ту же область, что и первые два метода.получить -Wreorder и -Wunknown-pragmas предупреждения, но я все еще получаю -Wsign-compare предупреждения.

0 голосов
/ 06 октября 2018

Вы добавляете флаги в конце, после сканирования подпапки, вы должны сначала установить флаги, а затем пройти через ваши подпапки.

...