WIN10 cmake+make编译cpp

博客介绍了CMake使用MinGW编译时的注意要点。一是指定编译器,使用cmake -G “MinGW Makefiles”..,避免生成vs编译文件;二是若出现sh.exe相关问题,添加-DCMAKE_SH=\CMAKE_SH-NOTFOUND\;三是将mingw32-make.exe复制为make.exe以符合linux习惯。

1. 注意指定编译器:cmake -G “MinGW Makefiles”  ..,不然会生成的是vs的编译文件。

2. 如果出现sh.exe的相关问题,添加-DCMAKE_SH="CMAKE_SH-NOTFOUND"

3. 把[xxx]/MinGW/bin/mingw32-make.exe 复制为make.exe 符合linux下习惯。

<think>嗯,用户想了解如何使用CMakeMake进行编译。首先我需要回忆一下CMakeMake的基本流程。记得CMake是用来生成Makefile的工具,这样用户就不用手动写复杂的Makefile了。那步骤应该是先写CMakeLists.txt,然后用cmake命令生成Makefile,最后用make编译。 首先,用户可能不太清楚CMakeLists.txt的写法。得举个例子,比如最简单的项目结构,包含源文件和头文件的情况。例如,项目目录里有src和include文件夹,这时候需要在CMakeLists里设置include目录,添加可执行文件。可能需要提到cmake_minimum_required和project这些基本命令,还有add_executable。 然后,用户可能不知道如何运行cmake。要说明在项目根目录下创建build文件夹,然后进入build运行cmake ..,这样生成的Makefile会在build目录里,不会污染源代码。接下来是make命令,这样就能编译生成可执行文件了。 另外,用户可能有更复杂的需求,比如添加库或者依赖。这时候需要提到find_package或者target_link_libraries这些命令。例如链接OpenGL或者Boost这样的库。可能需要引用用户提供的引用[2]里的内容,原文件到camkelist到cmake再到makefile和make的流程。 还要注意跨平台编译的情况,比如Android。用户提到了引用[3],关于osgEarth的Android编译。这时候可能需要设置交叉编译工具链,指定目标平台。例如使用CMAKE_TOOLCHAIN_FILE参数,或者设置ANDROID_NDK路径。这部分可能需要更详细的说明,但用户的问题比较基础,可能暂时不需要深入,但可以提到相关应用场景。 可能用户会遇到常见问题,比如找不到头文件或库,这时候需要检查include_directories和link_directories是否正确设置。或者CMake版本不兼容,引用[1]提到了不同版本的CMake,可能需要建议用户使用较新的版本。 最后,生成相关问题的时候,应该覆盖基本概念、流程、优化方法以及跨平台编译,这样用户如果有进一步的问题,可以自行查阅。</think>### 使用CMakeMake编译的步骤 以下是使用CMakeMake进行代码编译的标准流程: 1. **编写CMakeLists.txt** - 在项目根目录创建`CMakeLists.txt`文件,定义编译规则。 - 示例(基础版本): ```cmake cmake_minimum_required(VERSION 3.10) # 指定CMake最低版本[^1] project(MyProject) # 定义项目名称 add_executable(my_app main.cpp) # 添加可执行文件 ``` 2. **生成构建系统文件** ```bash mkdir build && cd build # 创建构建目录 cmake .. # 生成Makefile[^2] ``` 3. **执行编译** ```bash make # 调用Make工具编译代码 ``` 4. **运行程序** ```bash ./my_app # 执行生成的可执行文件 ``` ### 进阶配置示例 ```cmake # 添加头文件目录 include_directories(include) # 添加源文件 file(GLOB SOURCES "src/*.cpp") # 链接第三方库 find_package(OpenGL REQUIRED) add_executable(my_app ${SOURCES}) target_link_libraries(my_app OpenGL::GL) ``` ### 常见问题解决 - **依赖缺失**:使用`find_package()`定位系统库,或手动指定路径`link_directories(/path/to/lib)` - **跨平台编译**:通过`-DCMAKE_TOOLCHAIN_FILE`指定工具链(如Android NDK)[^3]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值