在CMake构建系统中,管理和编译多个源代码子目录是一项常见的需求。"CMake添加引用多个子目录多个CMakeLists同时编译"的主题旨在教你如何有效地组织项目结构,并使用CMake来处理复杂的多目录工程。下面将详细介绍如何实现这一目标。 一个CMake项目通常由一个顶级的`CMakeLists.txt`文件开始,它负责定义项目的全局属性和包含其他子目录。在顶级`CMakeLists.txt`中,你需要使用`add_subdirectory()`命令来添加子目录。这个命令告诉CMake去查找每个指定子目录中的`CMakeLists.txt`文件,并将它们纳入构建过程。 例如,假设你有以下项目结构: ``` project/ |-- CMakeLists.txt (顶级CMakeLists) |-- src/ | |-- CMakeLists.txt (src子目录的CMakeLists) |-- include/ | |-- CMakeLists.txt (include子目录的CMakeLists) ``` 在顶级`CMakeLists.txt`中,你可以这样写: ```cmake cmake_minimum_required(VERSION 3.10) project(MyProject) # 添加src子目录 add_subdirectory(src) # 添加include子目录 add_subdirectory(include) ``` 接下来,我们需要在`src/CMakeLists.txt`和`include/CMakeLists.txt`中定义各自的构建规则。在`src/CMakeLists.txt`中,你可能有多个源文件,可以使用`aux_source_directory()`获取所有源文件,然后使用`add_executable()`或`add_library()`来创建目标: ```cmake aux_source_directory(. SRC_LIST) add_executable(MyProgram ${SRC_LIST}) ``` 同样,在`include/CMakeLists.txt`中,如果包含头文件,可以使用`install()`命令将它们安装到适当的位置,以便在其他地方被引用: ```cmake install(DIRECTORY . DESTINATION include/${PROJECT_NAME}) ``` CMake还支持设置目标间依赖,例如库和程序之间的依赖。在子目录的`CMakeLists.txt`中,你可以使用`target_link_libraries()`来指定链接的库: ```cmake target_link_libraries(MyProgram PUBLIC MyLibrary) ``` 此外,CMake提供了一些高级特性,如`target_include_directories()`用于设置头文件路径,`target_compile_options()`用于添加编译选项,`find_package()`用于查找并链接外部库等。 在多目录项目中,正确管理头文件和库的可见性也很关键。你可以使用`PUBLIC`, `PRIVATE`和`INTERFACE`关键字来控制这些属性。例如: ```cmake target_include_directories(MyLibrary PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) ``` 这样,`MyLibrary`的公共头文件路径就对其他链接它的目标可见了。 总结来说,CMake通过`add_subdirectory()`命令使多子目录项目编译变得简单。每个子目录的`CMakeLists.txt`文件负责自身的构建逻辑,而顶级`CMakeLists.txt`则作为整个项目的协调者。通过合理组织和配置,可以构建出复杂的多模块工程,方便跨平台编译和管理。在实际开发中,根据项目需求灵活运用这些CMake指令,可以提高工程的可维护性和可扩展性。
2024-12-12 22:05:45 3KB cmake 多个子目录
1
基于TexturePacker和ugui,可具体查看精灵在预制中的引用,可以查看精灵名在代码中的引用,以便于清理冗余和无用资源。根据自己的工程在 AtlasSourceDataManagerConfigData(配置文件)中设置具体路径。图集文件默认格式(atlas_*.png),TexturePacker Publish后手动Reload一下
2024-09-20 11:52:12 9KB unity ugui texturepacker
1
在开发ASP.NET Web应用程序时,有时会遇到这样一个问题:在本地开发环境中,一切运行正常,但当项目发布到服务器或IIS上时,可能会遇到“找不到Microsoft.ReportViewer.Common组件”的错误。这通常是因为在发布过程中,相关的DLL文件没有正确地包含在部署包中,或者是IIS服务器缺少必要的组件。本文将详细介绍如何解决这个问题。 我们需要了解`Microsoft.ReportViewer.Common`是微软 Reporting Services 的一部分,用于提供报表查看器控件的基础功能。它包含了报表处理、数据访问以及报表渲染等通用功能。如果在Web项目中使用了ReportViewer控件,那么这个库是必不可少的。 1. **检查项目引用**: 在Visual Studio中,首先确保你的项目已经正确引用了`Microsoft.ReportViewer.Common`和`Microsoft.ReportViewer.WebForms`两个库。在“解决方案资源管理器”中,查看“引用”目录下是否包含这两个引用。如果没有,需要通过“添加引用”对话框从“Assemblies”或“浏览”选项中找到并添加它们。 2. **发布设置调整**: 当发布项目时,确保“发布”配置中的“目标框架”与服务器上的.NET Framework版本一致。不同版本的.NET Framework可能不包含所有版本的ReportViewer组件。 3. **复制本地设置**: 对于引用的`Microsoft.ReportViewer.Common`和`Microsoft.ReportViewer.WebForms`,检查其属性设置。确保“复制本地”属性设置为“True”,这样在发布时,相关DLL会一并打包到发布的文件夹中。 4. **Web.config配置**: 检查`Web.config`文件,确保已配置正确的注册段,例如: ``` ``` 这里版本号15.0.0.0应与你使用的ReportViewer版本对应。 5. **服务器环境检查**: 确认服务器上的IIS已安装了相应的ASP.NET版本,并且注册了.NET Framework。另外,需要检查服务器是否安装了“Microsoft SQL Server Data Tools”或者“SQL Server Reporting Services”。如果没有,需要安装这些组件以提供ReportViewer所需的服务。 6. **部署策略**: 如果以上步骤都确认无误,但问题依然存在,可以尝试手动将`Microsoft.ReportViewer.*`的DLL文件复制到服务器的`bin`目录下,或者将其放入全局程序集缓存(GAC)。 7. **权限问题**: 有时候,IIS应用池的账户可能没有足够的权限访问ReportViewer组件。确保应用池账号具有读取和执行相关DLL文件的权限。 8. **更新或降级组件**: 如果服务器上安装的ReportViewer版本与项目引用的版本不匹配,可以尝试更新或降级项目中的引用以匹配服务器环境。 解决`Microsoft.ReportViewer.Common`无法引用的问题,需要从项目配置、发布设置、服务器环境等多个方面进行排查和调整。在进行这些步骤时,建议保持耐心,因为每一个环节都可能成为问题的关键。希望以上信息能帮助你成功解决这个问题。
2024-08-09 11:28:47 6.81MB Common
1
全网首发,保证可用,基于最新file-viewer3构建产物,独此一份。 可用于vue2和vue3,您可直接参考demo集成。 博客地址:https://blog.csdn.net/wybaby168/article/details/129954677 本集成方式有着天然优势,不需要担心项目依赖冲突,不需要考虑兼容性,不需要会TypeScript,建议大家优先以该方式集成。 本项目是本人基于实际工作共享的第一个小项目,诞生于2022年上旬。 作为当前仓库的vue3构建版本,会跟随vue2版本持续更新,敬请期待,欢迎提交issue. Vue3版本特性: 高质量的TypeScript代码重构模块,更加优雅的实现等你发现 使用极速响应的Vite架构,畅快开发 完全重构了部分模块,如Word,Excel,Pptx等组件 优化Excel主题颜色解析,完美还原Excel样式 优化Pptx响应速度,使用重用逻辑 优化Pptx加载项,解耦图表部分,待重构解耦相关NvD3依赖。 使用完全的组合式API构建应用,高性能低占用 解耦了样式依赖,FileViewer组件依赖父节点进行布局,自动填满
2024-07-10 10:42:35 10.88MB
1
本文对已发布的 chp5 附件包(Vs2019 运行老版本c# 项目所产生的一些问题的处理方法).rar包中文件有关乱码问题,作了些补充修改完善。
1
此资源用于本地HTML项目直接通过引用方式加载、使用ElementUI组件
2024-05-22 21:52:22 371KB elementui
1
2024最新Sora论文(Video generation models as world simulators)的引用文件,包含bib、txt(用于endnote),rdf。 - 方便论文写作直接使用
2024-02-21 09:17:46 4.91MB 毕业设计
1
这是个C#版本的气泡控件,一直以来C#上的聊天气泡都是个难题,可以试试这个。
2024-01-13 11:29:05 52KB 气泡聊天
1
一个功能强大的C/C++ 源代码分析软件。可以处理数百万行的源程序代码。支持标准及K&R风格的C/C++ 。对每一个源代码工程,通过建立一个包含丰富交叉引用关系的数据库,显示其所含的各种信息:所有的源文件、所有的头文件、词汇索引、文件包含关系、宏定义、数据结构和函数定义、函数调用关系、诊断性输出等。仅须按一键就可以非常方便地扩展各种类型的定义和调用关系。所有这些结合起来可以非常有效地帮助用户快捷地理解和维护大规模的源代码工程。 包含各种友好的用户界面效果,如对窗口的标签化排列、任意分隔、自动隐藏、浮动、拖拉等。可以使用户快速地找到每一个功能性窗口并重新以各种格局加以任意组合。 包含有一个多功能的文本及十六进制编辑器。可以设置多个文件定义来指定对文件的处理、颜色及样式等。可以较快地定位当前或以前打开的某个文件。 包含一个可以同时打开多个工程的工作区,有许多命令可以处理某一个或所有的工程。有强大的功能可以同时在多个文件、文件夹、工程中进行后台查找和替换。 包含一个强大的比较模块,可以进行文件间或文件夹间的后台对比。提供有许多命令来显示目标之间的差别。
2023-12-12 17:27:10 4.64MB C/C++源码查看 交叉引用
1
十分简单的C#引用ThoughtWorks.QRCode.dll生成二维码,适用于初学者,如果需要进行进一步研究,可在网上下载更全面的信息。
2023-11-25 23:38:41 721KB 二维码
1