C++CMakeList.txt在命令行的使用

Posted 玛丽莲茼蒿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++CMakeList.txt在命令行的使用相关的知识,希望对你有一定的参考价值。

前提:在官网下载好了cmake工具,并且配置好了环境变量。

一、 编写CMakeLists.txt

在项目的顶层目录中,建立一个CMakeLists.txt文件。以某个真实项目为例,内容如下:

cmake_minimum_required (VERSION 3.10.0)

SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENVCXXFLAGS -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENVCXXFLAGS -O3 -Wall")
#if($OpenCV_VERSION_MAJOR GREATER 3)
#        set(CMAKE_CXX_STANDARD 11)  
#endif()

# 项目名称
project(IR)

find_package(OpenCV REQUIRED)

# 头文件路径
include_directories(
    "$PROJECT_SOURCE_DIR/uvc"
  "$PROJECT_SOURCE_DIR/include"
  "$OpenCV_INCLUDE_DIRS" 
  #"/usr/include/opencv4"
  #"/usr/include/opencv4/opencv2"
  
)


link_directories(
    "/usr/lib/aarch64-linux-gnu"
    "/usr/lib"
    "$PROJECT_SOURCE_DIR/lib"
    #"$OpenCV_LIBS_DIRS"
    "/usr/lib/aarch64-linux-gnu/"
)


SET(SRC_LIST 
    "$PROJECT_SOURCE_DIR/uvc/camtrans.cpp"
    "$PROJECT_SOURCE_DIR/uvc/ircammanager.cpp"
    "$PROJECT_SOURCE_DIR/uvc/serialport.cpp"
    "$PROJECT_SOURCE_DIR/uvc/v4l2core.c"
    "$PROJECT_SOURCE_DIR/src/client_triton.cpp"
)

#------------选择编译后生成可执行文件还是动态链接库
  # add_library(
  #clienttriton SHARED
  #$SRC_LIST
  #      $<TARGET_OBJECTS:json-utils-library>
  #)
  add_executable(
  IR
   $SRC_LIST
    # $<TARGET_OBJECTS:json-utils-library>
      )

SET(LK_LIB $OpenCV_LIBS 
)

#add_executable(TritonClient $SRC_LIST)

target_link_libraries(IR $LK_LIB)
target_link_libraries(IR /lib/aarch64-linux-gnu/libpthread.so.0)



二、使用cmake编译 

写好CMakeLists.txt,需要进行编译并生成可执行文件,以下是步骤,假设工程目录为work_ws/bufferevent.

首先进入build文件夹

cd work_ws/bufferevent/build

接下来生成makefile文件,..表示上一级目录,也就是CMakeLists.txt所在目录 

cmake ..

 编译makefile文件,生成可执行文件

make

三、省时省力小技巧 

 如果我们嫌每次都要删除原来生成的可执行文件,然后输入cmke..,然后再make有点繁琐,我们可以自己编写sh文件放在build文件夹下,在sh文件里输入我们要执行的相关指令。如下,是我在build文件夹下创建的make.sh文件。

#开启扩展模式匹配 否则识别不了下面的!()
shopt -s  extglob
#删除当前文件夹下除了make.sh之外的所有文件
rm -rf !(make.sh)
#生成Makefile
cmake ..
#根据Makefile生成编译生成可执行文件
make
#删除中间产生的编译文件
rm -rf CMakeFiles CMakeCache.txt cmake_install.cmake Makefile

这样,每次我只要进入工程下的build文件夹,输入 

sh make.sh

 即可编译生成可执行文件。

以上是关于C++CMakeList.txt在命令行的使用的主要内容,如果未能解决你的问题,请参考以下文章

如何写CMakeList.txt

CMake 基本用法--写CMakeList.txt

怎样编写Cmake的配置文件Cmakelist.txt

单个源文件下CmakeList.txt

在 cmakelist.txt 中添加和链接 mysql 库

在 cmakelist.txt 中添加和链接 mysql 库