首页 › Category Archives › cmake

CMAKE 中平台判断

CMAKE 中判断当前操作系统平台:

CMake 自动检测系统编译器是否支持C++11

在 CMakeLists.txt 中加入以下代码, 可以自动判断系统编译器是否支持c++11标准:

CMAKE的使用

一、      基本使用

安装:下载二进制包后可直接解压使用

从源码安装则执行命令:./bootstrap; make; make install——尝试执行bootstrap失败

使用:cmake dir_path,生成工程文件或makefile文件

二、      概念

out-of-source build,与in-source build相对,即将编译输出文件与源文件放到不同目录中;

三、      基本结构

1,依赖CMakeLists.txt文件,项目主目标一个,主目录中可指定包含的子目录;

2,在项目CMakeLists.txt中使用project指定项目名称,add_subdirectory添加子目录

3,子目录CMakeLists.txt将从父目录CMakeLists.txt继承设置(TBD,待检验)

四、      语法

1.       #注释
继续阅读 »

cmake管理visual studio无法显示头文件解决方法

原因

我们的跨平台项目使用cmake来管理的,但是windows下的小伙伴发现在visual studio上头文件没有加载进来,于是手工加载,事情过去了。然后,有一天我修改了CMakeLists.txt文件,visual studio居然自动去重新生成了项目,然后头文件就没有了。哭吧~~~~

解决方法

source_group可以将文件分目录来显示在IDE中。
所以,修改了一下base.cmake文件让所有的项目都能检索出头文件并显示在include文件夹中。

重新生成windows项目,头文件自动出现了,win下的小伙伴们幸福了。

vim、emacs党徒直接无视~~~

cmake总结

无论生活还是工作上,做过的事,需要总结下。

接触cmake,一般都会看一本书 <<cmake 实践>>. 这是cmake的入门书。我就不多说了。

下面说一下我对部分cmake命令的使用与理解,不正确的,请大家指点,谢谢!
继续阅读 »

再谈CMake与RPATH

之前写过一篇<探讨CMake中关于RPATH的使用>,只要针对的方面是在编译生成之后(不包括安装的make install)如何去除RPATH的问题。今天给大家主要介绍一下如何让CMake在用install命令之后如何保持RPATH。
继续阅读 »

探讨CMake中关于RPATH的使用

最近研究CMake,发现CMake对于RPATH的管理也非常人性化。官方说法是当动态库的编译也和执行档在同级目录下的时候,CMake会自动给执行档加入适当的RPATH.具体可以通过readelf -d executable来查看相关的RPATH路径。所以有的时候用QMake编译之后还得手动加一把LD_LIBRARY_PATH,而用CMake编译之后,直接执行执行档就可以了。
继续阅读 »

cmake学习(五) 系统默认变量和内置变量

1、在不同的平台编译的时候,会用到一些系统内置的变量,比如操作系统名称,版本号之类:
CMAKE_SYSTEM:系統全名,如 “Linux-2.4.22″,”FreeBSD-5.4-RELEASE” 或 “Windows 5.1”
CMAKE_SYSTEM_NAME:系統名称,如 “Linux”, “FreeBSD” or “Windows”,注意大小写
CMAKE_SYSTEM_VERSION:只显示系统全名中的版本部分
CMAKE_SYSTEM_PROCESSOR:CPU名称
继续阅读 »

cmake学习(四)模块的使用和自定义模块

FIND_PACKAGE
每一个模块都会产生如下变量
_FOUND
_INCLUDE_DIR
_LIBRARY or _LIBRARIES
如果_FOUND为真,把_INCLUDE_DIR加入到INCLUDE_DIRECTORIES中,_LIBRARY加入到TARGET_LINK_LIBRARIES中。
继续阅读 »

cmake学习(三)常用指令

一、基本指令:
INCLUDE_DIRECTORIES(${includedir}) #-I。
LINK_DIRECTORIES(${libdir}) #-L
TARGET_LINK_LIBRARIES(helloworld ${linkflags}) #-l
ADD_DEFINITIONS(${cflags}) #-D
继续阅读 »