CMake source_group 在 Qtcreator 上不起作用

CMake source_group doesn't work on Qtcreator

本文关键字:Qtcreator 不起作用 group source CMake      更新时间:2023-10-16

在我的项目中,我有一个顶级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创建了一个文件夹结构,其中节点具有我的源文件的完整路径,这显然是次优的。我试图在src文件夹下的列表中添加一个source_group,但QtCreator似乎只是忽略了它。

如何让source_group工作?

source_group 用于由 cmake 创建的使用生成器的项目,例如 Visual Studio ,否则它将被忽略。我看到QtCreator有一个生成器的下拉列表。您使用的是哪一个?我没有看到任何关于QtCreator如何解释项目以将文件列出到它自己的GUI中的文档。这超出了cmake的控制范围。