在xcode上New Group 的同时在本地创建一个文件夹(不支持Xcode8)

一、使用xcode工程中new group存在的问题;

1.如果在xcode工程中new group,只是在视觉效果上分好了几个文件夹,方便分类管理,但在finder中并不会创建新的文件夹,在硬盘目录还是所有文件都并列在一个文件夹内;

接下来打开finder

你会发现在工程文件中找不到 这个文件夹


二、如何在xcode工程中创建文件夹(并不是new groud)

安装插件FKRealGroup (推荐使用)

(可以在终端安装插件管理Alcatraz

Alcatraz安装步骤:http://www.cnblogs.com/Ruby_c/p/5645889.html )

 FKRealGroup是一个增强Xcode创建、删除文件夹的插件。FKRealGroup会在编辑菜单中添加”New Real Group”和”Delete Real Group”两个选项。

 


<think>我们正在处理一个关于CMake的问题,用户想要在已有的CMake项目中添加多个新工程(可能是可执行文件或库),并为这些新工程创建一个新的筛选器(在IDE中组织项目的一种方式,例如在VisualStudio中就是SolutionFolder)。根据引用[3]:CMake脚本以CMakeLists.txt文件形式存在,通常包含核心指令如`add_executable`和`add_library`来生成可执行文件和库。另外,引用[4]提到CMake可以管理多目标构建,这对于需要生成多个目标(如库文件、可执行文件等)的项目非常有用。在CMake中,我们通常通过`add_executable`或`add_library`来添加新的目标(即可执行文件或库)。而“筛选器”在CMake中对应的概念是“目标分组”。在生成IDE项目(如VisualStudio)时,我们可以使用`source_group`命令来组织源文件,但是对于整个目标的组织(即工程/项目级别的筛选器),CMake提供了`set_property`和`set_target_properties`命令,结合`FOLDER`属性来实现。具体步骤:1.在CMakeLists.txt中,使用`add_executable`或`add_library`添加新工程(目标)。2.为这些目标设置`FOLDER`属性,将它们归入一个文件夹(即筛选器)中。注意:为了使`FOLDER`属性生效,通常需要先设置一个全局变量`CMAKE_FOLDER_PREFIX`(可选)或者直接使用`set_property`命令。但更常见的做法是设置每个目标的`FOLDER`属性。另外,为了在顶层CMakeLists.txt中管理多个子工程,我们也可以使用`add_subdirectory`命令,每个子目录可以包含一个工程(目标)的CMakeLists.txt。然后,我们可以在每个子工程中设置目标的`FOLDER`属性,或者在顶层统一设置。示例:假设我们有一个已有的CMake项目,现在要添加两个新的可执行文件工程:`new_app1`和`new_app2`,并将它们放入一个名为“新工程”的筛选器中。步骤:1.在项目的CMakeLists.txt中,添加新工程:```cmakeadd_executable(new_app1src/new_app1.cpp)add_executable(new_app2src/new_app2.cpp)```2.设置目标的FOLDER属性(需要CMake2.8或更高版本):```cmakeset_property(TARGETnew_app1PROPERTYFOLDER"新工程")set_property(TARGETnew_app2PROPERTYFOLDER"新工程")```或者,使用循环(如果目标很多):```cmakeset(NEW_PROJECT_TARGETSnew_app1new_app2)foreach(targetINLISTSNEW_PROJECT_TARGETS)set_property(TARGET${target}PROPERTYFOLDER"新工程")endforeach()```注意:在VisualStudio中,这将在解决方案资源管理器中创建一个名为“新工程”的文件夹,并将这两个工程放入其中。但是,上述方法只对支持文件夹的生成器有效(如VisualStudio和Xcode)。对于其他生成器(如Makefile),这个属性会被忽略。另外,如果项目中有多个子目录,每个子目录有自己的CMakeLists.txt,那么可以在每个子目录中设置目标的FOLDER属性,但为了统一管理,也可以在顶层设置。还有一个问题:如何确保这个“新工程”筛选器在IDE中显示?这需要确保在生成项目之前设置了目标的FOLDER属性。补充:有时我们希望将目标分组到不同的文件夹层次中,可以使用斜杠(/)来创建文件夹,例如:```cmakeset_property(TARGETnew_app1PROPERTYFOLDER"新工程/子组1")```此外,引用[1]中提到在创建新项目时选择C++Executable,所以我们可以类比,在已有项目中添加新的可执行目标。根据用户的需求,他可能已经有一个CMake项目,现在要添加多个新工程,所以我们需要指导他在CMakeLists.txt中添加目标并设置文件夹属性。注意:如果用户使用的是较旧版本的CMake(低于2.8),则可能不支持FOLDER属性。但现在的CMake版本普遍较高,所以通常没问题。最后,为了确保CMake能够正确生成项目,需要在设置属性后重新生成构建系统(例如运行cmake命令)。因此,回答将按照以下结构:1.解释如何添加新工程(目标)。2.解释如何设置FOLDER属性来创建筛选器。3.提供一个完整的示例。同时,根据指令,我们需要生成相关问题。</think>### 在CMake项目中添加多个新工程并创建筛选器 在CMake中添加多个新工程并为它们创建筛选器(Solution Folder)的步骤如下: #### 1. **添加新工程目标** 在`CMakeLists.txt`中使用`add_executable`或`add_library`定义新工程: ```cmake # 添加可执行文件目标 add_executable(NewProject1 src/new_project1.cpp) add_executable(NewProject2 src/new_project2.cpp) # 或添加库目标 add_library(NewLibrary STATIC src/new_lib.cpp) ``` #### 2. **创建筛选器分组** 通过`set_property`设置目标的`FOLDER`属性实现分组: ```cmake set_property(TARGET NewProject1 PROPERTY FOLDER "新工程组") set_property(TARGET NewProject2 PROPERTY FOLDER "新工程组") set_property(TARGET NewLibrary PROPERTY FOLDER "新工程组") ``` #### 3. **组织源文件筛选器** 使用`source_group`为源文件创建子筛选器: ```cmake source_group("新工程组\\源文件" FILES src/new_project1.cpp src/new_project2.cpp ) source_group("新工程组\\头文件" FILES include/new_lib.h ) ``` #### 4. **完整结构示例** ```cmake cmake_minimum_required(VERSION 3.10) project(MySolution) # 添加主工程 add_executable(MainApp main.cpp) # 添加新工程组 add_executable(NewProject1 src/project1.cpp) add_executable(NewProject2 src/project2.cpp) add_library(NewLib STATIC src/lib.cpp) # 设置工程分组 set_property(TARGET NewProject1 NewProject2 NewLib PROPERTY FOLDER "新工程组" ) # 设置源文件分组 source_group("新工程组\\源文件" FILES src/project1.cpp src/project2.cpp src/lib.cpp ) source_group("新工程组\\头文件" FILES include/lib.h ) ``` #### 5. **跨平台注意事项** - **Visual Studio**:自动生成`新工程组`筛选器 - **其他IDE**:Xcode/Makefile会忽略`FOLDER`属性 - **属性作用域**:需在定义目标**后**设置属性[^3] #### 6. **重新生成构建系统** ```bash cmake -S . -B build cmake --build build ``` > **效果说明**:在Visual Studio解决方案资源管理器中,所有新工程会归类到`新工程组`筛选器下,源文件按指定子组组织[^4]。 --- ### 相关问题 1. 如何在CMake中为不同平台设置差异化的编译选项? 2. CMake的`source_group`命令是否支持嵌套文件夹结构? 3. 如何将第三方库项目作为子模块集成到CMake工程中? 4. CMake中的`FOLDER`属性在Xcode/macOS环境中如何映射? 5. 有哪些最佳实践可以管理包含50+子工程的大型CMake项目? [^1]: 创建新项目时需指定语言标准和项目类型 [^2]: CMake对多平台构建工具的原生支持机制 [^3]: CMake属性设置需在目标定义后执行 [^4]: 筛选器功能在跨平台项目中的实际应用差异
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值