C++ 保持目录结构

C++ 保持目录结构,c++,cmake,C++,Cmake,我有一个结构如下的项目: src 工具 模块 核心 着色器 缓冲区 公司 工具 模块 核心 着色器 缓冲区 CMake使用唯一文件夹“源文件”中的所有.cpp文件创建我的项目。我试图保留原始结构,这是我的CMakeLists.txt: # Paths. set( SRCROOT ${PROJECT_SOURCE_DIR}/src/Framework/Graphic ) set( INCROOT ${PROJECT_SOURCE_DIR}/inc/Framework/Graph

我有一个结构如下的项目:

  • src

    • 工具
    • 模块
    • 核心
      • 着色器
      • 缓冲区
  • 公司

    • 工具
    • 模块
    • 核心
      • 着色器
      • 缓冲区
CMake使用唯一文件夹“源文件”中的所有.cpp文件创建我的项目。我试图保留原始结构,这是我的CMakeLists.txt:

# Paths.
set( SRCROOT ${PROJECT_SOURCE_DIR}/src/Framework/Graphic )
set( INCROOT ${PROJECT_SOURCE_DIR}/inc/Framework/Graphic )

# Get .hpp and .cpp files.
file(
    GLOB_RECURSE
    GRAPHIC_FILES
    ${SRCROOT}
    ${INCROOT}
)

# Packages.
find_package(OpenGL REQUIRED)

# Create the library.
add_library(Graphic ${GRAPHIC_FILES} )
我怎么办?
谢谢你的时间

我假设您正在使用CMake创建一个visualstudio项目,并希望在文件系统中组织源文件时将其可视化

可以通过对每个子文件夹中的文件明确使用CMake命令来实现这一点

FILE(GLOB TOOLS_FILES
    ${SRCROOT}/src/tools/*
)
SOURCE_GROUP(tools FILES ${TOOLS_FILES})

。。。等等(未测试的代码)

通常,如果工具正在与您发生冲突,则不要进行反击。反正你输了。工具是用来节省时间的,但你会在战斗中失去它。选择其他工具。@ÖöTiib:我会称之为使用该工具的配置选项,而不是对抗它。谢谢,这是工作,但您需要指示所有文件夹和子文件夹,因此我使用source_group:)制作了一个宏。