gpt4 book ai didi

visual-studio - cmake:如何创建Visual Studio过滤器

转载 作者:行者123 更新时间:2023-12-03 13:26:20 24 4
gpt4 key购买 nike

我已经看过了(StackOverflow等),并且正在尝试使用cmake生成Visual Studio筛选器。我有以下文件夹:

src/math  
src/import
src/ui

我想生成上面的过滤器。 math:包含src / math中的所有cpp&h文件 import:包含src / import中的所有cpp&h文件 ui:包含src / ui中的所有cpp和h文件

我已经尝试了几种解决方案,但似乎都没有效果!!!

这是 CMakeList.txt中代码的最新版本:
set(VD_SRC "${VisualDesigner_SOURCE_DIR}/src/visualdesigner")

file(GLOB_RECURSE SRC_UI
"${VD_SRC}/ui/*.cpp", "${VD_SRC}/ui/*.h")
file(GLOB_RECURSE SRC_IMPORT
"${VD_SRC}/import/*.cpp",
"${VD_SRC}/import/*.h")

source_group("ui" FILES ${SRC_UI})
source_group("import" FILES ${SRC_IMPORT})

欢迎任何帮助!

最佳答案

参见How to set Visual Studio Filters for nested sub directory using cmake

请注意

  • source_group() 命令只能与列出相同源(路径必须匹配)的 add_library() add_executable() 命令结合使用
  • source_group()命令不检查文件是否实际存在(因此,它会接受您提供的任何内容,并且在项目文件生成期间会尝试将给定的源组文件名与项目中使用的文件进行匹配)

  • 我通过添加相应的 add_library()目标来尝试了您的代码,它可以按预期工作(CMake 3.3.2和VS2015):
    set(VD_SRC "${VisualDesigner_SOURCE_DIR}/src/visualdesigner")

    file(GLOB_RECURSE SRC_UI
    "${VD_SRC}/ui/*.cpp"
    "${VD_SRC}/ui/*.h"
    )
    file(GLOB_RECURSE SRC_IMPORT
    "${VD_SRC}/import/*.cpp"
    "${VD_SRC}/import/*.h"
    )

    add_library(VisalDesigner ${SRC_UI} ${SRC_IMPORT})

    source_group("ui" FILES ${SRC_UI})
    source_group("import" FILES ${SRC_IMPORT})

    结果是

    Solution Explorer with Filters

    这是来自 Visual Studio as an editor for CMake friendly project的更广义的版本:
    set(_src_root_path "${VisualDesigner_SOURCE_DIR}/src/visualdesigner")
    file(
    GLOB_RECURSE _source_list
    LIST_DIRECTORIES false
    "${_src_root_path}/*.c*"
    "${_src_root_path}/*.h*"
    )

    add_library(VisualDesigner ${_source_list})

    foreach(_source IN ITEMS ${_source_list})
    get_filename_component(_source_path "${_source}" PATH)
    file(RELATIVE_PATH _source_path_rel "${_src_root_path}" "${_source_path}")
    string(REPLACE "/" "\\" _group_path "${_source_path_rel}")
    source_group("${_group_path}" FILES "${_source}")
    endforeach()

    关于visual-studio - cmake:如何创建Visual Studio过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808087/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com