一次windows下使用cmake遇到的问题
背景
在windows下的cmake和mingw提供的make,在windows环境下进行了简单尝试,结果发现make的时候失败:
#include <iostream>
int main(){
std::cout << "Hello, makefile." << std::endl;
return 0;
}
CMakeList如下:
project(test)
add_executable(test test.cpp)
非常简单的语法,但在项目目录创建了build目录以后:
cd build; cmake ..
make
出错了:make: *** No targets specified and no makefile found. Stop.,是的,make出错,但这时候还不懂问题所在,以下是build目录的生成文件:

如上,这种样式的build,不就满满的vs风嘛?!后来才在一位博主的文章中得到灵感,确定了cmake时不明确指定平台,它就会自动读取系统信息,然后进行系统相关的默认生成,所以上面需要用上make,就需要明确一点:
PS D:\Desktop\test\build> cmake .. -G "Unix Makefiles"
-- The C compiler identification is GNU 8.1.0
-- The CXX compiler identification is GNU 8.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: D:/software/mingw-w64/bin/gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: D:/software/mingw-w64/bin/c++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Desktop/test/build
PS D:\Desktop\test\build> ls
目录: D:\Desktop\test\build
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/6/8 16:17 CMakeFiles
-a---- 2023/6/8 16:17 16598 CMakeCache.txt
-a---- 2023/6/8 16:17 1554 cmake_install.cmake
-a---- 2023/6/8 16:17 5337 Makefile
PS D:\Desktop\test\build> make
[ 50%] Building CXX object CMakeFiles/test.exe.dir/test.cpp.obj
[100%] Linking CXX executable test.exe
[100%] Built target test
PS D:\Desktop\test\build> ./test
Hello, cmakefile.
整理一下,cmake的使用,是控制项目有序生成对应系统平台的build,windows下是生成比较标准的vs解决方案,嗯所以很多时候用cmake以后还是用vs打开来编译一下;linux下则是专门生成makefile(当然windows下指定参数来生成也是可以),后面再make就行。
更多文章可以查看
一次windows下使用cmake遇到的问题的更多相关文章
- windows下安装cmake
windows下安装cmake 下载地址 download -> cmake-3.12.0-rc2-win64-x64.msi 安装 验证cmake --version
- Windows下使用CMake进阶
目录 回顾代码工程中有什么 将需要的东西在cmake脚本CMakeLists.txt中申明 一键型编译 使用nmake 使用msbuild 实现一键编译 参考 在CMake入门实践一文中,我们初略的介 ...
- windows下使用cmake编译zlib与libpng libjpeg
win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/, 选择最新版本的windows版本压缩包,进行下载. jpeg ...
- Windows下利用CMake和VS2013编译OpenCV
转载自:http://www.chengxulvtu.com/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html 获取OpenCV ...
- windows下使用cmake+mingw配置makefile
前面一节说了cmake简易使用,但是实际开发中项目文件非常多,使用哪种简易方式会导致代码十分混乱,因此本文介绍一种cmake管理大型项目的demo流程. 具体步骤如下: 1.创建相关的项目目录 cmd ...
- windows 下使用cmake指定visual studio 版本
https://blog.csdn.net/iceboy314159/article/details/87829950
- Windows下VTK6.0.0安装详解(CMake使用说明)
操作系统:Windows7,用到工具:Visual studio.CMake. 1.准备工作 VTK下载: 下载最新VTK稳定版(6.0.0,截至2013年7月)http://www.vtk.org/ ...
- Windows 下使用 MinGW 和 CMake 进行开发
CMake 是个非常棒的项目管理工具,这已经是毋庸置疑的. 一些小工具需要在 win 下开发,所以今天探索使用 MinGW 和 CMake 在 win 下的搭配使用.简单做记录. MinGW 使用 Q ...
- Windows下CMake编译安装OpenCV
Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...
- windows下使用vs进行Proctocol Buffer开发(C++篇)
因工作原因接触Proctocol Buffer(protobuf),至于什么是protobuf,为何使用protobuf,我就不赘述了,百度下都是答案. 今天我介绍的是在windows下使用vs进行p ...
随机推荐
- manim边做边学--动画联动
今天介绍Manim中的动画联动的技巧,在数学动画中,动画联动是常用的功能, 比如讲解平面几何中三角形与圆的位置关系变化,通过动画联动可以让圆沿着三角形的边滚动,或者让三角形的顶点在圆上移动,从而直观地 ...
- shell脚本中的变量
在shell脚本中使用变量显得我们的脚本更加专业更像是一门语言,开个玩笑,变量的作用当然不是为了专业.如果你写了一个长达1000行的shell脚本,并且脚本中出现了某一个命令或者路径几百次.突然你觉得 ...
- 完整的 c 语言用到的基础知识总结
作者: baron 博客: baron-z.cn 用于记录 c 语言基础知识,如果没有特别说明本文的所有代码编译环境为 gcc 编译器编译,学习资料来自狄泰软件学院可在淘宝购买学习 一.基本数据类型 ...
- py并发编程
并发编程(并发,并行,同步,异步) 通俗理解并发编程中的相关核心概念 核心概念:进程.线程 CPU的作用 计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. CPU的核数(多核 ...
- 详细剖析Java动态线程池的扩容以及缩容操作
前言 在项目中,我们经常会使用到线程来处理加快我们的任务.但为了节约资源,大多数程序员都会把线程进行池化,使用线程池来更好的支持我们的业务. Java线程池ThreadPoolExecutor有几个比 ...
- 02如何直接使用uni-app中提供的模板之公告滚动
用hBuibler将提供的模板下载下载,通过url上的路径找到你需要的模板对应的位置. 然后将这个文件夹中的diamante全部赋值过来就ok了. <view class="uni-p ...
- Maven配置代理
Maven配置代理 找到settings.xml文件: 通常位于Maven安装目录下的conf文件夹中.或者位于用户目录下的.m2文件夹中(例如:$HOME/.m2/settings.xml). 编辑 ...
- I2C死锁产生机理与解决方法
在I2C实际使用过程中,最容易出现的一个问题就是死锁 ,其主要表现为:SCL持续为高,SDA持续为低. 产生机理 I2C死锁产生的机理是:当Slave输出应答信号或者输出数据0时,Master发生异常 ...
- Hetao P3804 Cut 题解 [ 蓝 ] [ AC 自动机 ] [ 差分 ]
Cut:AC 自动机简单题. 思路 看见多个模式串以及求前缀,很显然能想到构建一个 AC 自动机. 那么在用 \(T\) 查询时,当前指针的深度就是该位置的最长前缀匹配长度.这个在字典树 insert ...
- Tensorflow 安装和测试(Anaconda4.7.10+windows10)
一. 软件下载 二. 配置相关 1. 修改 Jupyter notebook 默认工作路径 (1)打开 Anaconda Prompt ,输入 jupyter notebook --generate- ...