cmake的簡單使用:
来源:互联网 发布:数据库的简单实现 编辑:程序博客网 时间:2024/05/21 10:28
cmake的獲取:
我們可以從cmake官網直接下載cmake的binary或者source code。cmake官網下載
cmake的binary安裝:
如果想偷懶或者自己感覺沒有必要,那就直接在官網下載的Binary distributions中找適合自己的就可以了。如果沒有特殊要求,請直接下載最新版本,當前最新版本是2.8.12.1。 1. 下載 cmake-2.8.12.1-Linux-i386.tar.gz 2. 解壓,我們會生成cmake-2.8.12.1-Linux-i386的文件夾- $ tar xvf cmake-2.8.12.1-Linux-i386.tar.gz
3. 把cmake-2.8.12.1-Linux-i386/ 移動到目錄/usr/local下,并重命名為cmake-2.8.12.1/
- $ mv cmake-2.8.12.1-Linux-i386/ /usr/local/cmake-2.8.12.1/
4. 設置路徑 /usr/local/cmake-2.8.12.1/bin/ 到PATH變量中,- export PATH=/usr/local/cmake-2.8.12.1/bin/:$PATH
cmake的source code 編譯,安裝
我們從官網下載的source distributions中下載cmake-2.8.12.1.tar.gz,和binary一樣,這個也是沒有特殊要求,下載最新的,該版本當前為最新版本。 1.下載cmake-2.8.12.1.tar.gz 2.解壓cmake-2.8.12.1.tar.gz,我們會生成cmake-2.8.12.1/的文件夾- $ tar xvf cmake-2.8.12.1.tar.gz
3. 進入cmake-2.8.12.1/- $ cd cmake-2.8.12.1/
4. 這裡含有CMakeLists.txt 和configure,我們默認使用configure(假設我們暫時沒有cmake)- $ ./configure --prefix=`pwd`/_install/ (--prefix可以隨意指定,只是我們在加入PATH時,加入我們指定目錄的bin就可以了)
5. 編譯,安裝:- $ make && make install (如果前面指定的目錄不在你的用戶目錄下,也許在安裝時沒有權限,我們需要在make install 前面加上sudo)
- $ tar xvf cmake-2.8.12.1-Linux-i386.tar.gz
- $ mv cmake-2.8.12.1-Linux-i386/ /usr/local/cmake-2.8.12.1/
- export PATH=/usr/local/cmake-2.8.12.1/bin/:$PATH
cmake的source code 編譯,安裝
- $ tar xvf cmake-2.8.12.1.tar.gz
- $ cd cmake-2.8.12.1/
- $ ./configure --prefix=`pwd`/_install/ (--prefix可以隨意指定,只是我們在加入PATH時,加入我們指定目錄的bin就可以了)
- $ make && make install (如果前面指定的目錄不在你的用戶目錄下,也許在安裝時沒有權限,我們需要在make install 前面加上sudo)
cmake的簡單使用:
Robin的BB工程下載
1. 第一个CMake 工程:
先tree一下helloworld工程:
列出 CMakeLists.txt的内容:
2.包含靜態庫的CMake工程示例:
同樣tree一下multilibs工程:
列出 CMakeLists.txt的内容:
multilibs 下的CMakeLists.txt:
multilibs/lib/下的CMakeLists.txt:
multilibs/lib/apple/下的CMakeLists.txt:
multilibs/lib/linux/下的CMakeLists.txt:
multilibs/lib/window/下的CMakeLists.txt:
展示一下multilibs工程的編譯和執行過程:
1. 第一个CMake 工程:
先tree一下helloworld工程:
- helloworld$ tree
- .
- ├── CMakeLists.txt
- └── helloworld.c
- 0 directories, 2 files
- helloworld$ cat CMakeLists.txt
- # project的参数可以随意设置
- project(hello)
- # 最低版本限制
- cmake_minimum_required(VERSION 2.8)
- # 把.c/.cpp赋值给SRC
- aux_source_directory(. SRC)
- # 编译$(SRC) 为 HelloRobin,工程的输出也可以随意设置
- add_executable(HelloRobin ${SRC})
2.包含靜態庫的CMake工程示例:
同樣tree一下multilibs工程:
- multilibs$ tree
- .
- ├── CMakeLists.txt
- ├── include
- │ ├── apple.h
- │ ├── linux.h
- │ └── window.h
- ├── lib
- │ ├── apple
- │ │ ├── apple.c
- │ │ └── CMakeLists.txt
- │ ├── CMakeLists.txt
- │ ├── linux
- │ │ ├── CMakeLists.txt
- │ │ └── linux.c
- │ └── window
- │ ├── CMakeLists.txt
- │ └── window.c
- ├── README
- └── src
- └── main.c
列出 CMakeLists.txt的内容:
multilibs 下的CMakeLists.txt:
- multilibs$ cat CMakeLists.txt
- # 设置工程的名称,大小写都行,大写比较帅气
- project(MULTILIBS)
- # 设置cmake的最小版本号
- cmake_minimum_required(VERSION 2.8)
- # 设置cmake的源码根目录
- set(CMAKE_SOURCE_DIR .)
- # 设置include的目录
- include_directories(${CMAKE_SOURCE_DIR}/include)
- # 增加我们需要的子目录
- add_subdirectory(lib)
- # 把${CMAKE_SOURCE_DIR}/src下的所有.c/.cpp 赋值给变量SRC
- aux_source_directory(${CMAKE_SOURCE_DIR}/src SRC)
- # ${SRC}下的文件编译成为 main 文件
- ADD_EXECUTABLE(main ${SRC})
- # 编译main时需要链接的库文件
- target_link_libraries(main linux)
- target_link_libraries(main window)
- target_link_libraries(main apple)
multilibs/lib/下的CMakeLists.txt:
- multilibs/lib$ cat CMakeLists.txt
- add_subdirectory(linux)
- add_subdirectory(apple)
- add_subdirectory(window)
multilibs/lib/apple/下的CMakeLists.txt:
- multilibs/lib/apple$ cat CMakeLists.txt
- aux_source_directory(. APPLE)
- add_library(apple ${APPLE})
multilibs/lib/linux/下的CMakeLists.txt:
- multilibs/lib/linux$ cat CMakeLists.txt
- aux_source_directory(. LINUX)
- add_library(linux ${LINUX})
multilibs/lib/window/下的CMakeLists.txt:
- multilibs/lib/window$ cat CMakeLists.txt
- aux_source_directory(. WINDOW)
- add_library(window ${WINDOW})
展示一下multilibs工程的編譯和執行過程:
- cmake_testcase$ ls
- helloworld multilibs README
- cmake_testcase$ mkdir build
- cmake_testcase$ ls
- build helloworld multilibs README
- cmake_testcase$ cd build/
- robin@ubuntu:~/workspace/c_wspace/cmake/cmake_testcase/build$ cmake ../multilibs/
- -- The C compiler identification is GNU 4.6.3
- -- The CXX compiler identification is GNU 4.6.3
- -- Check for working C compiler: /usr/bin/cc
- -- Check for working C compiler: /usr/bin/cc -- works
- -- Detecting C compiler ABI info
- -- Detecting C compiler ABI info - done
- -- Check for working CXX compiler: /usr/bin/c++
- -- Check for working CXX compiler: /usr/bin/c++ -- works
- -- Detecting CXX compiler ABI info
- -- Detecting CXX compiler ABI info - done
- -- Configuring done
- -- Generating done
- -- Build files have been written to: /home/robin/workspace/c_wspace/cmake/cmake_testcase/build
- cmake_testcase/build$ make
- Scanning dependencies of target window
- [ 25%] Building C object lib/window/CMakeFiles/window.dir/window.c.o
- Linking C static library libwindow.a
- [ 25%] Built target window
- Scanning dependencies of target linux
- [ 50%] Building C object lib/linux/CMakeFiles/linux.dir/linux.c.o
- Linking C static library liblinux.a
- [ 50%] Built target linux
- Scanning dependencies of target apple
- [ 75%] Building C object lib/apple/CMakeFiles/apple.dir/apple.c.o
- Linking C static library libapple.a
- [ 75%] Built target apple
- Scanning dependencies of target main
- [100%] Building C object CMakeFiles/main.dir/src/main.c.o
- Linking C executable main
- [100%] Built target main
- cmake_testcase/build$ ./main
- Hello!!!!Linux
- Hello!!Apple
- Hello!!!!!!Window
參考鏈接:
1.http://cmake.org/cmake/resources/software.html
2.http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/
3.http://www.cnblogs.com/itech/archive/2010/11/28/1890220.html
0 0
- cmake的簡單使用:
- [CMake] CMake的使用
- cmake 的使用
- CMAKE的使用
- CMAKE的使用
- CMake的使用
- CMake的简单使用
- 学习cmake的使用
- CMAKE的使用
- CMAKE的使用
- CMake的使用
- CMAKE的使用
- Cmake的使用
- CMAKE的使用
- CMake的使用
- CMAKE的使用
- cmake的使用练习
- CMAKE的使用
- 解决VS2010升级SP1后出现的warning C4005问题
- HTML5---Mozilla HTML5 Dashboard(HTML5新技术演示集合)
- 20140327收盘 忘了写了。。。当天没有操作。
- 【AC自动机+DP】匹配(match)
- VC中类型的相互转化
- cmake的簡單使用:
- oracle 创建、使用索引和判断索引是否被使用
- IBM在大数据时代的“新打法”
- 子串子序列相关面试题总结
- 计数排序
- Error: Table ad for model Ad was not found in datasource default.
- java&& Linux 线程大小
- Android onTouchEvent, onClick及onLongClick的调用机制
- 蜀道难