В моем проекте у меня есть CMakeLists.txt верхнего уровня, где я определяю общие свойства проекта:
cmake_minimum_required(VERSION 3.11 FATAL_ERROR)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif (CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
project(databaseclient LANGUAGES CXX VERSION 0.1.0.0 DESCRIPTION "Asynchronous database client")
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE DEBUG)
endif(NOT CMAKE_BUILD_TYPE)
add_subdirectory(src)
И в папке с исходным кодом моего проекта я определяю библиотеку OBJECT, которая позже будет связана со статической и динамическойбиблиотеки:
set(
SOURCE_FILES
${PROJECT_SOURCE_DIR}/include/databaseclient/parameters.hpp
)
add_library(
${PROJECT_NAME}
OBJECT
${SOURCE_FILES}
)
set_target_properties(
${PROJECT_NAME}
PROPERTIES
VERSION ${PROJECT_VERSION}
POSITION_INDEPENDENT_CODE ON
)
target_compile_features(
${PROJECT_NAME}
PUBLIC
cxx_std_11 cxx_noexcept
cxx_auto_type
cxx_constexpr
cxx_deleted_functions
cxx_inline_namespaces
cxx_lambdas
cxx_noexcept
cxx_nullptr
cxx_override
cxx_range_for
)
target_compile_definitions(
${PROJECT_NAME}
PRIVATE
ASIO_STANDALONE=1
ASIO_NO_EXCEPTIONS=1
ASIO_NO_DEPRECATED=1
)
target_include_directories(
${PROJECT_NAME}
PRIVATE
${byte-lite_SOURCE_DIR}/include/nonstd
${asio_SOURCE_DIR}/asio/include/
${PROJECT_SOURCE_DIR}/include/
)
QtCreator создает структуру папок, в которой узел имеет полный путь к моим исходным файлам, что, очевидно, является неоптимальным.Я пытался добавить source_group
в список в папке src
, но QtCreator, похоже, просто игнорирует его.
Как мне заставить source_group работать?