跨平台C++开源码的两种经常使用编译方式

作者:朱金灿

来源:http://blog.csdn.net/clever101

跨平台C++开源代码为适应各种编译器的编译,採用了两种方式方面来适配。一种是makefile方式。以著名的空间数据格式解析库gdal为例,它就是提供了makefile来供各种编译器来编译。

gdal主要提供了微软的VC编译器和GNU GCC编译器两种格式的makefile,在gdal的源代码根文件夹能够找到makefile.vc和GNUmakefile两个makefile文件。当中makefile.vc为vc编译器的makefile,GNUmakefile为GNU GCC编译器的makefile。

还有一种方式是使用CMake软件。CMake软件能够看作是依据源代码来构建各个IDE厂商的project格式。

CMake是一个开源软件,CMake支持的部分IDE(编译器)例如以下图:

从上图能够看出CMake能够支持非常多IDE。

CMake软件的输出文件夹习惯是开源代码根文件夹下的cmake文件夹。

跨平台C++开源代码一般至少支持makefile或CMake方式进行编译,有些两种都支持。

怎样推断一个开源代码支持哪些方式?一个粗浅的办法是查看源代码根文件夹下是否有以makefile命名的文件,假设有,非常可能是支持makefile编译的,假设源代码根文件夹下有CMakeLists.txt,应该是支持CMake方式进行编译。

时间: 2024-11-24 00:00:22

跨平台C++开源码的两种经常使用编译方式的相关文章

跨平台C++开源代码的两种常用编译方式

作者:朱金灿 来源:http://blog.csdn.net/clever101 跨平台C++开源代码为适应各种编译器的编译,采用了两种方式方面来适配.一种是makefile方式.以著名的空间数据格式解析库gdal为例,它就是提供了makefile来供各种编译器来编译.gdal主要提供了微软的VC编译器和GNU GCC编译器两种格式的makefile,在gdal的源码根目录可以找到makefile.vc和GNUmakefile两个makefile文件,其中makefile.vc为vc编译器的ma

串口调试,抓码的两种方法

1.使用的工具Accessport  和  QCom跨平台串口调试助手两个 2.抓码的两种方法 (一)使用Accessport工具中的监听功能,监听com端口获取16进制码 (二)使用Qcom打开串口作为接收端,接收软件发送来的16进制码  (此方法获取码率比较困难) 两个软件的地址 Accessport       http://www.sudt.com/ QCom  http://www.qter.org/?page_id=203

PHP生成带logo图像二维码的两种方法

本文主要和大家分享PHP生成带logo图像二维码的两种方法,主要以文字和代码的形式和大家分享,希望能帮助到大家. 一.利用Google API生成二维码Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $urlToEncode="http://www.php.cn"; generateQRfromGoogle($urlToEncode); /**

两种访问接口的方式(get和post)

跨机器.跨语言的远程访问形式一共有三种:scoket发送数据包.http发送请求.rmi远程连接: http发送请求方式:分为post和get两种方式 importjava.io.IOException; importjava.io.InputStream; import java.util.Map; importjava.util.concurrent.atomic.AtomicInteger; importorg.apache.commons.httpclient.HttpClient; i

javascript两种声明函数的方式的一次深入解析

声明函数的方式 javascript有两种声明函数的方式,一个是函数表达式定义函数,也就是我们说的匿名函数方式,一个是函数语句定义函数,下面看代码: /*方式一*/ var FUNCTION_NAME = function() { /* FUNCTION_BODY */}; /*方式二*/ function FUNCTION_NAME () { /* FUNCTION_BODY */}; 区别一 方式一的声明方式是先声明后使用 方式二的声明方式可以先调用,后声明 /*方式一: *先声明后使用 *

Adnroid 两种下拉刷新 方式的实现 sina刷新 gmail刷新

sina刷新 这种下拉刷新的方式是比较简单的.上个图: 这种刷新方式的思路是这样的: 首先是需要一个HeaderVIew也就是刷新时头部所显示出来的数据.这个view的布局随你,长啥样自己定夺. 其他不是特别重要,重要的是用户触摸事件的捕捉,看到github上的大神的一些方法是比较正规的,我就自己用自己的方法尝试,主要是捕捉到用户的点击事件来计算用户所触摸到的位置然后来更新头部布局的位置. 这个重要的代码贴出来: case MotionEvent.ACTION_MOVE: currentY =

两种停止Thread的方式

当你想要依据某些条件终结thread的时候,有两种最常见的方式. 设定标记 最常见停止thread的方式是设定某些标记来表示该thread应该要停止了.thread可以周期性地查询标记以判别它是否应该退出.如例: package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main {     public stati

FMX有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法

看FMX代码,发现有两种消息处理的实现方式,一种是用TMessageManager来实现自定义的消息,另外一种象TEdit中的实现,直接声明消息方法. 早前,看过文章说TMessageManager的用法,可用到的时候,又找不到,只好自己动手. 我的应用场景是这样: 当前的Frame弹出一个对话框Frame,当操作对话框的时候,想让当前的Frame跟着应响,让用户看到操作的结果,如下图,点大中小字体,后面的题目的字体会跟着变化: 参考fmx的代码,试着用消息机制实现了: 1.声明消息类: typ

ajax有两种提交数据的方式,分别为get和post(转)

ajax有两种提交数据的方式,分别为get和post.post方法可传输大于2K的数据,在Ajax里的应用不同之处在于:"post方法的请求地址与传输的数据是放在两个对象里—-请求地址放在open对象里,传输的数据放在send对象里:并且在传输数据之前定义一个传输文件HTTP头信息(setRequestHeader)" 以下为引用的内容: <SCRIPT LANGUAGE="javascript"> function saveUserInfo(){ //