有vs了为什么还要用cmake(没装gcc能用cmake吗)
本文目录
没装gcc能用cmake吗
- make这一类工具是根据makefile来执行预定的编译器指令和其它相关命令;cmake也是一样,它不光能用gcc,还应该能用其它的编译器,如vs的cl****
- make可以理解成是个办事文员,程序员写好了代码,就交待他要怎么怎么编译,为了生成一个项目,都需要怎么怎么做;它和编译器没有必然关系,不过有了它,程序员可以不用每次更新了自己的代码时,从头到脚每个文件都重新编译一次而已。
- makefile不一定与某种编译器挂钩,因为它不一定使用该编译器,前面说过一次了
- 第一个编译器,……,对这个感兴趣的话可以去看一下编译器实现原理;就C语言来说,C语言是在贝尔电话实验室中诞生的,当然很有可能,第一个C编译器诞生在那个实验室,而且因为没有C语言,它的开发使用了其它更早出现的高级语言如BASIC/algo……甚至于是汇编语言
VS 里面的那个编译器,能单独拿出来给CMake用吗
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。
通过编写*****,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在*****中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的*****。
总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。
准备活动:
(1)安装cmake。
下载地址:
根据自己的需要下载相应的包即可,Windows下可以下载zip压缩的绿色版本,还可以下载源代码。
Windows下CMake的使用
(2)运行cmake的方法。(GUI、命令行)
CMake使用步骤:
运行GUI的cmake界面:
cmake-2.8.1-win32-x86\bin\cmake-gui****
Windows下CMake的使用
执行Configure:
运行之后,生成了如下文件:
Windows下CMake的使用
生成Makefile:
执行Generate之后生成如下文件:
Windows下CMake的使用
运行make进行编译:
Windows下CMake的使用
编译完成后,在build目录生成Tutorial****,运行Tutorial**** 25就可以看到运行结果:
Windows下CMake的使用
运行make install安装程序:
Windows下CMake的使用
运行make test进行测试:
Windows下CMake的使用
通过cmake tutorial学习CMake配置方法
可以在源代码的Tests/Turorial目录中找到这个手册对应的代码。
Windows下CMake的使用
1、Step1。
(如果不知道如何使用cmake,以及如何使用编译产生的Turorial****,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行make install,无法运行make test,但可以参考。)
简单的程序编译。
(1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。
Windows下CMake的使用
(2)点击Configure,配置成功后,再点击Generate。
配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;选择Unix Makefiles,配置成功,它自动找到了DevC++下的gcc****等编译器。
Windows下CMake的使用
(3)在build3目录执行make,就能够编译生成Turorial****了。
D:\Projects\Lab\testngpp\cmake-2.***\Tests\Tutorial\Step1\build3》make
Linking CXX executable Tutorial****
Built target Tutorial
可以运行一下Turorial****:
D:\Projects\Lab\testngpp\cmake-2.***\Tests\Tutorial\Step1\build3》Tutorial****
Tutorial**** Version ***
Usage: Tutorial**** number
D:\Projects\Lab\testngpp\cmake-2.***\Tests\Tutorial\Step1\build3》Tutorial**** 4
The square root of 4 is 2
2、Step2
把子目录编译为库,并且链接到最终的可执行文件。
include_directories ("${PROJECT_SOURCE_DIR}/MathFuncti***")
add_subdirectory (MathFuncti***) # 使得子目录MathFuncti***也能被编译
# add the executable
add_executable (Tutorial *****)
target_link_libraries (Tutorial MathFuncti***)
产生makefile:
在GUI上点击Configure,之后Generate还是灰色,再次点击Configure,Generate就可以点击了。
编译:
为什么要使用CMake+VS编译OpenCV的源码
因为opencv中各个组件都是大家贡献的代码,而且opencv高度依赖机器的指令集等等特性,同时opencv也有众多的可配置项,不同的机器配置不同的操作系统环境会对opencv编译过程产生很多影响,所以如果使用makefile的方式来编译opencv那么opencv的安装将变得十分的复杂。
一,为什么用CMake
Cmake可以通过让开发者描述build参数在一个简单地可以移植的文本文件里,这个文件能够被cmake用来产生类似于MS Visual Studio和Apple’s Xcode的项目文件,当然也有*NIX下的Makefile。
Cmake给同一平台,多机开发环境的很多帮助:
自动搜索所需要的程序,库,头文件的能力,这包含了环境变量和windows的注册表等信息
能够在源码树外进行build,这个功能在很多UNIX环境下很有益处,这个功能使得开发者可以很轻松的删掉整个build目录,而不会担心误删源码文件
创建复杂自定义命令的能力,比如自动生成Qt的moc文件等等
提供配置选项用于额外的组件,比如几个VTK的库是可选的,那么CMake提供选择build哪些库
能够从一个简单地text文件自动生成workspace和project文件
能够很简单的选择使用静态库还是共享库
自动生成文件依赖,并且支持并行build
当开发跨平台的软件时,CMake还能提供其他特性:
能够测试平台的字节序和其他硬件特性
一整套的build配置文件,能够在多平台上很好地工作
支持在多平台上创建共享库
最近CMake项目的进展是拥有了软件测试支持——CTest,此外还有个CPack,是设计用来支持跨平台分发软件的,能够创建本地安装文件,比如可以被NSIS,RPM,Cygwin等使用。
此外还有支持了XCode和VS10。加入了交叉编译功能,CMake能够很好地处理host系统和目标系统的区别。
Cmake和VS分别是用来干什么的
cmakevsqmakeqmake是为Qt量身打造的,使用起来非常方便cmake使用上不如qmake简单直接,但复杂换来的是强大的功能内置的out-ofsource构建。(目前QtCreator为qmake也默认启用了该功能,称:shadowbuild)为各种平台和场景提供条件编译可处理多个可执行文件情况,和很好配合QtTest工作如何选择?UsingCMaketoBuildQtProjects一文中说:对简单的Qt工程,采用qmake对复杂度超过qmake处理能力的,采用cmake尽管如此,如果简单Qt的工程都不知道怎么用cmake构建,复杂的工程,就更不知道如何使用cmake了。还是从简单的学起吧简单的Qt程序#include#includeintmain(intargc,char**argv){QCoreApplicationapp(argc,argv);qDebug()-Ocoff-i-o")endif(MINGW)SET(example_*****/*****)SET(example_MOC_*****)QT4_WRAP_CPP(example_MOCS${example_MOC_SRCS})QT4_ADD_RESOURCES(example_RCC_*****)SET(example_SRCS${example_SRCS}${example_MOCS}${example_RCC_SRCS})ADD_EXECUTABLE(*****${example_SRCS})TARGET_LINK_LIBRARIES(example${QT_LIBRARIES})对Qt的资源文件,使用QT4_ADD_RESOURCES来调用rcc进行预处理对Windows资源文件,直接和源文件一样,添加到列表中即可。只是:MinGW下仅仅这么做还不行,上面的MinGW块用来修复这个问题Debug与Releaseqmake使用qmake时,可以在pro文件内分别为两种模式设置不同的选项。使用时,可以直接makerelease或makedebug来编译不同的版本cmake不同于qmake,由于cmake采用out-of-source方式。故:建立debugrelease两目录,分别在其中执行cmake-DCMAKE_BUILD_TYPE=Debug(或Release)需要编译不同版本时进入不同目录执行make对生成msvc工程的情况,CMAKE_BUILD_TYPE不起作用。生成工程后使用IDE自带的模式选择。
更多文章:
opengl+和directx+哪个好(OpenGL跟Direct**哪个比较好)
2026年5月4日 19:00
json文件怎么编写(macbook air怎么创建json文件)
2026年5月4日 18:40
专题页是什么(什么是专题页 什么关键词适合做专题页 专题页有什么优势 特点 什么情况下使用专题页)
2026年5月4日 17:20
绝对值函数excel公式怎么打(EXCEL中绝对值符号怎么打)
2026年5月4日 17:00
strcpy a b 什么意思(c语言中的char *a,*b; strcpy(a,b);与a=b;有什么区别)
2026年5月4日 16:20






