栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

linux下使用cmake管理C++项目

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux下使用cmake管理C++项目

linux下使用cmake管理C++项目 一、cmake简介:

普通的文件管理方式:

cmake的管理方式:

cmake优点:cmake可以跨平台对项目进行管理,如需增加/减少源文件,对于不同的平台,只需要修改CMakeLists.txt文件内容即可。

二、cmake的基本语法
  1. 基本语法格式:指令(参数一 参数二)
    -参数使用括弧括起来;
    -参数之间使用空格或者分号隔开;
  2. 指令大小写无关,参数和变量是大小写有关的
set(HELLO main.cpp)
add_executable(hello main.cpp hello.cpp)
ADD_EXECUTABLE(hello main.cpp ${HELLO})
变量使用${变量名}方式进行取值,但是在if语句中是直接使用变量名;
三、重要的指令和常用变量
  • cmake_minimum_required指定Cmake的最小版本要求
    语法:cmake_minimum_required(VERSION version number[FATAL_ERROR])
#cmake最小版本要求2.8.3
cmake_minimum_required(VERSION 2.8.3)
  • project 定义工程名称,并指定工程支持的语言
    语法:project(projectname [cxx][c][Java])
#指定项目名字为HELLOWORLD
project(HELLOWORLD)
  • set 显式定义变量
    语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])
#定义SRC变量
set(SRC hello.cpp main.cpp)
  • include_directories 向工程添加多个特定的头文件搜索路径
    相当于指定g++编译器的-l参数
    语法:include_directories(AFTER [BEFORE] [SYSTEM] dir1 dir2 ...)
#将/usr/include/myincludefolder 和 ./include添加到头文件搜索路径
include_directories(/usr/include/myincludefolder ./include)
  • link_directories 向工程内添加多个特定的库文件搜索路径
    相当于指定g++编译器的-L参数
    语法:link_directories(dir1 dir2)
#将/usr/lib/mylibfolder和./lib添加到库文件搜索路径
link_directories(/usr/lib/mylibfolder ./lib);
  • add_library 生成库文件
    语法:add_library(libname [SHARED|STATIC|MUDULE] [EXCLUDE_FROM_ALL] source1 source2 ...)
#通过变量SRC生成libhello.so共享库
add_library(hello SHARED ${SRC})
  • add_compile_options 添加编译参数
    语法:add_compile_optins( ...)
#添加编译参数 -Wall -std=c++11
add_compile_optins(-Wall -std=c++11 -o2)
  • add_executable生成可执行文件
    语法:add_executable(exename source1 source2 ...)
#编译main.cpp生成可执行文件main
add_executable(main main.cpp);
  • target_link_libraries 为target添加需要链接的共享库
    相当于指定g++编译器-l 参数
    语法:target_link_libraries(target library1library2)
#将hello动态库文件链接到可执行文件main
target_link_libraries(main hello)
  • add_subdirectory 向当前工程添加存放源文件的子目录,并可以指定中间二进制和目标二进制存放的位置
    语法:add_subdirectory(source_dir [binary_dir] [EXCLUDE_FROM_ALL])
#添加src子目录,src中需要一个CMakeList.txt
add_subdirectory(src)
  • aux_source_directory 发现一个目录下所有的源代码文件并将列表存储在一个变量中,这个变量临时被用来自动构建源文件列表
    语法:aux_source_directory(dir VARIABlE)
#定义SRC变量,其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)
#编译SRC变量所代表的源代码文件,生成main可执行文件
add_executable(main ${SRC})
四、cmake常用变量

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号