背景

在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遇到的问题的更多相关文章

  1. windows下安装cmake

    windows下安装cmake 下载地址 download -> cmake-3.12.0-rc2-win64-x64.msi 安装 验证cmake --version

  2. Windows下使用CMake进阶

    目录 回顾代码工程中有什么 将需要的东西在cmake脚本CMakeLists.txt中申明 一键型编译 使用nmake 使用msbuild 实现一键编译 参考 在CMake入门实践一文中,我们初略的介 ...

  3. windows下使用cmake编译zlib与libpng libjpeg

    win7下使用VS2010编译jpeglib 1.下载源代码下载地址:http://www.ijg.org/files/,     选择最新版本的windows版本压缩包,进行下载.     jpeg ...

  4. Windows下利用CMake和VS2013编译OpenCV

    转载自:http://www.chengxulvtu.com/2014/03/19/windows_build-opencv-with-cmake-and-vs2013.html   获取OpenCV ...

  5. windows下使用cmake+mingw配置makefile

    前面一节说了cmake简易使用,但是实际开发中项目文件非常多,使用哪种简易方式会导致代码十分混乱,因此本文介绍一种cmake管理大型项目的demo流程. 具体步骤如下: 1.创建相关的项目目录 cmd ...

  6. windows 下使用cmake指定visual studio 版本

    https://blog.csdn.net/iceboy314159/article/details/87829950

  7. Windows下VTK6.0.0安装详解(CMake使用说明)

    操作系统:Windows7,用到工具:Visual studio.CMake. 1.准备工作 VTK下载: 下载最新VTK稳定版(6.0.0,截至2013年7月)http://www.vtk.org/ ...

  8. Windows 下使用 MinGW 和 CMake 进行开发

    CMake 是个非常棒的项目管理工具,这已经是毋庸置疑的. 一些小工具需要在 win 下开发,所以今天探索使用 MinGW 和 CMake 在 win 下的搭配使用.简单做记录. MinGW 使用 Q ...

  9. Windows下CMake编译安装OpenCV

    Windows下CMake编译安装OpenCV 这是一个面向新手的在windows上运进opencv, helloword的教程. 在这里我们使用vs2019来编译opencv, 并运行一个hello ...

  10. windows下使用vs进行Proctocol Buffer开发(C++篇)

    因工作原因接触Proctocol Buffer(protobuf),至于什么是protobuf,为何使用protobuf,我就不赘述了,百度下都是答案. 今天我介绍的是在windows下使用vs进行p ...

随机推荐

  1. w3cschool-Spring Security

    https://www.w3cschool.cn/springsecurity/na1k1ihx.html Spring Security,这是一种基于 Spring AOP 和 Servlet 过滤 ...

  2. ForkJoin全解1:简单使用与大致实现原理

    1. 使用示例import java.lang.reflect.Method; import java.util.concurrent.ForkJoinPool;import java.util.co ...

  3. Websocket详细讲解

    因为websocket的内容比较多,所以准备分解将基础篇主要讨论一下websocket的概念,websocket和http协议的区别,客户端的websocket以及服务端的websocket,中间穿插 ...

  4. 找不到 MSVCP60D.dll

    问题 VC++ 运行程序时,出现错误: 解决办法 参考:链接 1.下载MSVCP60D.dll,下载:链接 下载的文件为64位,故应将文件复制到:C:\Windows\SysWOW64目录 2.打开& ...

  5. 面试题:区分List中remove(int index)和remove(Object obj)

    面试题:区分List中remove(int index)和remove(Object obj) package com.atguigu.exer;import org.junit.Test;impor ...

  6. vscode python remote debug极速入门

    本文适用范围 主要适用于debug python 程序,尤其是深度学习刚入门需要使用remote 连接到linux进行程序运行,想调试一下的同学. 当然非深度学习也可以参考食用本文哈哈哈. 极速入门版 ...

  7. Q:批处理备份临时文件

    批处理:将本月临时文件移动到历史目录中 chcp 936 @echo off set month=%date:~2,2%%date:~5,2% set year=%date:~0,4% echo %y ...

  8. docker官网镜像无法下载问题解决

    亲测可用,这个方法是由技术爬爬虾大佬提供,简单地说就是通过github上的docker_image_pusher项目,将国外docker镜像转存到阿里云私人仓库. 此方法需要你有一个github账号, ...

  9. [Ynoi2015] 我回来了 题解

    \(NOIP\) 考前祈福. 实际上,每种伤害 \(d\) 打出的亵渎次数可以转化为: \[1+\max\limits_{i=0}^{\lceil\frac{n}{d}\rceil}(i[\sum\l ...

  10. CUDA异常捕获

    技术背景 在CUDA编程中有可能会遇到一些相对比较隐蔽的报错,但是直接编译运行cu文件是不显现的.那么可以通过添加一个用于检查的宏,来监测CUDA程序运行过程中可能出现的报错. error.cuh 我 ...