Linux下用cmake编译大型C/C++项目
来源:互联网 发布:淘宝网抓绒女式外套 编辑:程序博客网 时间:2024/05/16 17:06
Linux下用cmake编译大型C/C++项目
通过cmake将c/c++项目编译成可执行文件或静态库或共享库
说明:
在项目根目录创建CMakeLists.txt文件,及项目src目录下创建添加编译文件的CMakeLists.txt文件。可以根据项目需求配置依赖库和需要生成的文件。
cmake文件
编译项目的CMakeLists.txt文件:
macro (add_sources) #遍历工程文件 file (RELATIVE_PATH _relPath "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}") foreach (_src ${ARGN}) if (_relPath) list (APPEND SRCS "${_relPath}/${_src}") else() list (APPEND SRCS "${_src}") endif() endforeach() if (_relPath) # propagate SRCS to parent directory set (SRCS ${SRCS} PARENT_SCOPE) endif()endmacro()project(dtest) #项目名称cmake_minimum_required(VERSION 2.8.4) #cmake最低版本#find_package(OpenCV REQUIRED)#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 ") #使用C++11编译#include_directories(${OPENCV_INCLUDE_DIRS} /home/star/library/dlib-19.2/) #项目依赖#LINK_DIRECTORIES(/home/star/library/dlib-19.2/build/dlib/libdlib.so)add_subdirectory(src)add_executable(dtest ${SRCS}) #生成可执行文件#ADD_LIBRARY(dtest SHARED ${SRCS}) #生成动态库#ADD_LIBRARY(dtest STATIC ${SRCS}) #生成静态库#target_link_libraries(dtest ${OpenCV_LIBS} /home/star/library/dlib-19.2/build/dlib/libdlib.so)
添加项目文件的CMakeLists.txt文件:
add_sources(HelloWorld.h HelloWorld.cpp)add_sources(main.cpp)#add_sources(calltest.cpp)
项目编译
- 创建编译文件夹
mkdir cbuild
- 切换到编译目录
cd cbuild
- 生成makefile文件
cmake ..
- 编译项目
make
- 运行可执行文件
./dtest
Demo:点击下载
注意:如果需要引用其他库,则引用的库(.a,.so)最好跟需要生成的库(.a,.so)类型一样否则可能会报错。
0 0
- Linux下用cmake编译大型C/C++项目
- 用CMake将visual studio 项目转到linux下编译
- 【Linux c】大型项目的调试技巧
- Linux下用gcc编译c程序
- Linux下用g++编译c程序
- LINUX下编译c程序
- Linux 下编译C程序
- linux下编译C 语言
- Linux下编译C程序
- Linux下编译C程序
- Linux下C编译系统
- Linux下编译C程序
- linux下编译C程序
- Linux 下编译C语言
- linux环境下编译C
- linux 下,编译c程序
- linux下命令行下编译c程序
- linux下命令行下编译c程序
- [HDU 3944] DP?组合数 Lucas定理
- java中字符串的比较
- PAT-A 1006. Sign In and Sign Out (25)
- react-native ActivityIndicator 初始值为false再也无法显示
- HTTP基础
- Linux下用cmake编译大型C/C++项目
- 卡尔曼滤波_2(图解)
- codves m进制转十进制 1475
- Protobuf笔记以及Java Javascript使用实例
- mac80211解析一
- android studio配置
- POJ3669-Meteor Shower-BFS
- 58到家数据库30条军规解读
- 求需要排序的最短子数组的长度