@ Jepessen, я пытался повторить твою проблему, и я получил твою ту же ошибку.Я обошел проблему, используя в этом случае более старую версию CMake
, 3.1, а также указал, что хочу использовать язык C ++, используя CMAKE_CXX_FLAGS
с конкретными указаниями -std=c++11
.Вы абсолютно правы в отношении упомянутой вами документации.
Когда CMake
необходимо знать поведение, чтобы использовать его, проверяет, указано ли это в проекте, а если нет, то CMake
устанавливает поведение OLD
по умолчанию.Как следствие этого всплывает предупреждение с просьбой позаботиться об этом.
Я обычно стараюсь не включать cmake_policy(policy #)
, поскольку большинство из них предназначены для более старых версий, и, следовательно, некоторые функции могут быть устаревшими и заменены новыми версиями.Конечно, могут быть ситуации, когда cmake_policy(SET CMP<####> NEW)
и cmake_policy(SET CMP<####> OLD)
должны быть специально адресованы.
Ниже приведен рабочий код (он компилируется на моем компьютере):
cmake_minimum_required (VERSION 3.1)
project (awfviewer)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(CMAKE_INCLUDE_CURRENT_DIR ON)
message (STATUS "Building project ${PROJECT_NAME}")
set (Boost_USE_STATIC_LIBS ON)
set (Boost_USE_MULTITHREADED ON)
unset (Boost_INCLUDE_DIR CACHE)
unset (Boost_LIBRARY_DIRS CACHE)
set (CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON)
set (CMAKE_AUTORCC ON)
find_package (Boost COMPONENTS program_options filesystem REQUIRED)
find_package (Qt5Core REQUIRED)
include_directories (${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/main ${CMAKE_CURRENT_SOURCE_DIR} ${Boost_INCLUDE_DIRS})
set (PROJECT_SRC)
set (PROJECT_MAIN
main.cpp
)
add_executable (${PROJECT_NAME} ${PROJECT_SRC})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
В этомВ этом случае единственное, что я не копировал, - это создание файла QRC
, но для маленького примера это не имеет значения.Обычно CMake
способен распознавать и принимать более старые версии самой CMake
, учитывая более новую версию.
Экран печати того, что я создал в этом случае,
Я надеюсьэто может быть полезно для вашего проекта