cmake和gcc的区别(编译器cmake 和g++的区别)

您所在的位置:网站首页 cmake和mingw的区别 cmake和gcc的区别(编译器cmake 和g++的区别)

cmake和gcc的区别(编译器cmake 和g++的区别)

2023-03-23 20:02| 来源: 网络整理| 查看: 265

本文目录编译器cmake 和g++的区别没装gcc能用cmake吗Linux下gcc/g++,make和cmake的区别CMake和Make之间的区别cmake:让mingw(gcc)生成MSVC可用的dll(.lib)----mark亲测有效深入讲解GCC和Make的区别在vmware linux中用命令行装mysql 要先装哪些东东gcc还是cmake 不懂 我的linux镜像i386的Cmake是什么有什么作用为什么要使用CmakeCmake是什么有什么用在WINDOWS下如何用cmake的版本会不会影响编译结果编译器cmake 和g++的区别

Cmake是一个make工具,它可以根据makefile文件来调用你和编译器进行多个文件的编译和链接。用Cmake生成的就是使用你本地的编译器来编译生成那些文件。

没装gcc能用cmake吗

make这一类工具是根据makefile来执行预定的编译器指令和其它相关命令;cmake也是一样,它不光能用gcc,还应该能用其它的编译器,如vs的cl.exemake可以理解成是个办事文员,程序员写好了代码,就交待他要怎么怎么编译,为了生成一个项目,都需要怎么怎么做;它和编译器没有必然关系,不过有了它,程序员可以不用每次更新了自己的代码时,从头到脚每个文件都重新编译一次而已。makefile不一定与某种编译器挂钩,因为它不一定使用该编译器,前面说过一次了第一个编译器,……,对这个感兴趣的话可以去看一下编译器实现原理;就C语言来说,C语言是在贝尔电话实验室中诞生的,当然很有可能,第一个C编译器诞生在那个实验室,而且因为没有C语言,它的开发使用了其它更早出现的高级语言如BASIC/algo……甚至于是汇编语言Linux下gcc/g++,make和cmake的区别

gcc是C语言编译器,而g++则是C++语言编译器,虽然gcc命令也可以用来编译C++语言的源码,但是它最终是要调用g++的。make工具通过你提供的一个名为Makefile的文件,根据Makefile的内容来决定如何编译源文件。而关于make和cmake的区别,你可以理解为make需要使用Makefile,而cmake是产生Makefile的工具。

CMake和Make之间的区别

CMake的是构建系统的生成器,CMake代表跨平台Make。它可以产生Makefile文件,它可以产生Ninja构建文件,它可以产生KDevelop或XCode的项目,它能产生Visual Studio解决方案。从同一个CMakeLists.txt文件来产生项目。如果你正在编写需要在很多不同的平台上构建的软件那么CMake的往往是一个不错的选择。写程序大体步骤为:1.用器编写源代码,如.c文件。2.用编译器编译代码生成目标文件,如.o。3.用链接器连接目标代码生成可执行文件,如.exe。但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。原文件--camkelist ---cmake ---makefile ---make ---生成可执行文件

cmake:让mingw(gcc)生成MSVC可用的dll(.lib)----mark亲测有效

minggw(gcc)编译出来的动态库(DLL),默认是没有MSVC连接动态库所需要的lib文件的。

关于MSVC的DLL和LIB的作用和区别,请参考这篇博文,讲得很透彻了–》《DLL和LIB的区别》

那么如果VC要链接gcc生成的DLL,却没有lib文件怎么办? 对于这个问题网上都有解决的办法,这篇文章讲到一些办法,可供收藏《VC6 调用GCC的DLL》,对于没有提供lib的DLL都可以用这篇文章提供的办法试试。

如果项目中不同的模块用不同的编译器编译,这时如果gcc编译的DLL没有import library(lib文件),可以通过cmake设置选项来解决。

CMAKE有一个GNUtoMS参数就是解决这个问题的。

GNUtoMS Convert GNU import library (.dll.a) to MS format (.lib).

When linking a shared library or executable that exports symbols using GNU tools on Windows (MinGW/MSYS) with Visual Studio installed convert the import library (.dll.a) from GNU to MS format (.lib). Both import libraries will be installed by install(TARGETS) and exported by install(EXPORT) and export() to be linked by applications with either GNU- or MS-compatible tools.

CMAKE_GNUtoMS Convert GNU import libraries (.dll.a) to MS format (.lib).

This variable is used to initialize the GNUtoMS property on targets when they are created. See that target property for additional information.(这个变量用来初始化GNUtoMS属性)

在用cmake生成Makefile时,设置GNUtoMS就可以解决这个问题。有两种途径:

shell命令行方式 如下在命令行中-D定义一个为bool类型的CMAKE_GNUtoMS参数为ON,就指示在编译时对dll生成.lib的import library

cmake %source_folder% -G “Eclipse CDT4 - MinGW Makefiles” -DCMAKE_GNUtoMS:BOOL=ON

cmak-gui 如下在cmake-gui界面中将CMAKE_GNUtoMS选项勾选,再点《generate》按钮生成Makefile

这里写图片描述

然后执行make编译项目的过程中,生成dll时会输出(前提是你安装了VC编译器)

Setting environment for using Microsoft Visual Studio 2010 x64 tools.

Microsoft (R) Library Manager Version 10.00.30319.01

Copyright (C) Microsoft Corporation. All rights reserved.

正在创建库 libturbojpeg.lib 和对象 libturbojpeg.exp

编译完成后,你就会发现所有的dll都有对应的lib文件了。 link: http://www.voidcn.com/article/p-tlmilzjf-ca.html

深入讲解GCC和Make的区别

Make用于构建目标,但它本身只调用其他程序,如gcc,ldgcc用于编译,链接make只是用于管理gcc是真的编译

在vmware linux中用命令行装mysql 要先装哪些东东gcc还是cmake 不懂 我的linux镜像i386的

这都是必须要装的,一般开发环境gcc都是装好的,只需要装个cmake。你可以解压完mysql查看INSTALL帮助文档,比较简单。大致是这样的:1、安装Mysqlshell》 tar zxvf mysql-VERSION.tar.gzshell》 cd mysql-VERSIONshell》 cmake .shell》 makeshell》 make install# End of source-build specific instructions# Postinstallation setupshell》 cd /usr/local/mysqlshell》 chown -R mysql .shell》 chgrp -R mysql .shell》 scripts/mysql_install_db --user=mysqlshell》 chown -R root .shell》 chown -R mysql data# Next command is optionalshell》 cp support-files/my-medium.cnf /etc/my.cnfshell》 bin/mysqld_safe --user=mysql &# Next command is optionalshell》 cp support-files/mysql.server /etc/init.d/mysql.server

Cmake是什么有什么作用为什么要使用Cmake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。作用是他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。

这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

CMake是为了解决美国国家医学图书馆出资的Visible Human Project专案下的Insight Segmentation and Registration Toolkit (ITK) 软件的跨平台建构的需求而创造出来的,其设计受到了Ken Martin开发的pcmaker所影响。pcmaker当初则是为了支持Visualization Toolkit这个开放源代码的三维图形和视觉系统才出现的,VTK也采用了CMake。

Cmake是什么有什么用在WINDOWS下如何用

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。准备活动:(1)安装cma

cmake的版本会不会影响编译结果

会。根据查询相关资料显示,cmake的版本包括(cuda、gcc、tensorflow的版本),这几个版本稍有偏差,就会造成编译运行失败影响结果。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3