CMake 学习(-)

百度搜到的。

用MinGW和CMake搭建便捷的C/C++开发环境(二)

但这个估计是作者只写了重点,有几个地方有遗漏,我按照他的做法没成功,几度崩溃。最后,自己不断摸索,解决了。现在把遗漏的补上,没基础的人伤 起呀。

这是工程文件 http://download.youkuaiyun.com/download/dinglearner/4911953

CMake练习
准备工作:在E盘新建一个文件夹cmakeproj,作为工程目录,
在cmakeproj文件夹中,建立src文件夹,用来存放源代码;建立build文件夹,用来构建我的应用程序;
在cmakeproj文件夹中,新建CMakeList.txt文件,我用工程根目录中的CMakeLists.txt文件做以下几件事情:


在build文件夹中:cmd:cmake –G”MinGW Makefiles” ..  在build文件夹中已经生成了我需要的Makefie,
接下来cmd:mingw32-make

最好,不要改变大小写,我试过,做Makefile成功 但make 却失败   报的错很奇怪:没有target or  找不到Makefile。



[main] 正在配置项目: shilei [proc] 执行命令: /usr/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -Dcmake.cmakePath:STRING=/usr/bin/cmake -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ --no-warn-unused-cli -S/home/yun/shilei/chatproject -B/home/yun/shilei/build -G "Unix Makefiles" [cmake] Not searching for unused variables given on the command line. [cmake] -- The C compiler identification is GNU 13.2.0 [cmake] -- The CXX compiler identification is GNU 13.2.0 [cmake] -- Detecting C compiler ABI info [cmake] -- Detecting C compiler ABI info - done [cmake] -- Check for working C compiler: /usr/bin/gcc - skipped [cmake] -- Detecting C compile features [cmake] -- Detecting C compile features - done [cmake] -- Detecting CXX compiler ABI info [cmake] -- Detecting CXX compiler ABI info - done [cmake] -- Check for working CXX compiler: /usr/bin/g++ - skipped [cmake] -- Detecting CXX compile features [cmake] -- Detecting CXX compile features - done [cmake] CMake Error at CMakeLists.txt:18 (add_subdirectory): [cmake] The source directory [cmake] [cmake] /home/yun/shilei/chatproject/src [cmake] [cmake] does not contain a CMakeLists.txt file. [cmake] [cmake] [cmake] -- Configuring incomplete, errors occurred! [cmake] See also "/home/yun/shilei/build/CMakeFiles/CMakeOutput.log". [proc] 命令“/usr/bin/cmake -DCMAKE_BUILD_TYPE:STRING=Debug -Dcmake.cmakePath:STRING=/usr/bin/cmake -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ --no-warn-unused-cli -S/home/yun/shilei/chatproject -B/home/yun/shilei/build -G "Unix Makefiles"”已退出,代码为 1 [ctest] 在测试资源管理器中找不到文件夹: /home/yun/shilei/chatproject
03-17
### 解决方案 当遇到 `CMake error 'source directory does not contain a CMakeLists.txt file'` 错误时,通常是因为指定的源目录中确实不存在 `CMakeLists.txt` 文件。以下是解决问题的方法: #### 1. 确认项目结构 确保项目的根目录或目标子目录(即 `src` 目录)存在有效的 `CMakeLists.txt` 文件。如果没有该文件,则需要手动创建并配置必要的设置[^1]。 ```cmake # 示例 CMakeLists.txt 内容 cmake_minimum_required(VERSION 3.10) project(MyProject LANGUAGES CXX) add_executable(myExecutable main.cpp) target_link_libraries(myExecutable PRIVATE Boost::boost) ``` 上述代码片段展示了如何定义一个基本的 CMake 配置文件,并链接到所需的组件(如 Boost)。这一步对于避免弃用警告以及正确引入外部库至关重要。 --- #### 2. 修改构建命令路径 如果 `CMakeLists.txt` 存在于某个特定子目录而非当前工作目录,则需调整调用路径。例如,假设 `CMakeLists.txt` 位于 `src/` 下面,可以运行以下命令来指定正确的源目录位置: ```bash mkdir build && cd build cmake ../src/ ``` 通过这种方式显式指定了父级 `src` 路径作为源码树起点,从而解决了找不到配置文件的问题。 --- #### 3. 删除无用的默认 Build Type 并优化调试体验 在某些情况下,默认生成器中的 Debug 和 Release 类型可能不符合实际需求。可以通过编辑 `CMakeLists.txt` 来移除不必要的选项或者替换为更实用的选择项,比如 `RelWithDebInfo` 提供带调试信息的发布版本支持[^2]: ```cmake set(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo" CACHE STRING "" FORCE) ``` 此更改会强制覆盖内置列表仅保留两个主要模式——开发阶段使用的 Debug 及兼顾性能与诊断能力平衡状态下的 RelWithDebInfo。 --- #### 4. 安装依赖关系处理 针对复杂工程而言,除了基础框架外还需要额外加载第三方资源包(像 dlib 这样的机器学习工具集),因此务必提前完成所有前置条件满足操作。以 Ubuntu 系统为例,在尝试编译之前先执行如下脚本获取必需品及其关联头文件集合[^3] : ```bash sudo apt-get update sudo apt-get install -y cmake libjpeg-dev libpng-dev \ python3-numpy git wget unzip build-essential ``` 接着按照官方文档指示逐步下载预训练模型数据压缩包解压至适当存储区域后再继续后续流程即可顺利完成整个环境搭建过程。 --- ### 总结 综上所述,要解决由于缺失 `CMakeLists.txt` 所引发的相关异常状况可以从以下几个方面入手:一是核实是否存在对应描述性文本;二是合理规划相对引用链路关系;三是依据具体应用场景定制化参数设定最后再辅以外部扩展模块辅助功能增强整体稳定性表现水平达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值