当前位置:   article > 正文

Cmake配置工程,管理src和include文件夹,构建最常见的工程目录结构,快速入手cmake,编写CMakeLists.txt文件_c++ 工程目录结构

c++ 工程目录结构

      初学CMake的时候,常用命令就算用到很熟练,但是对于整个工程的管理还会让我们感到吃力。我在这里分享一个常用的工程目录结构,对于CMake还不是特别熟练的同学,帮助大家快速上手CMake。

      这里演示的代码可以到我的github下载,下载链接,如果对你有帮助也可以帮我点个Star,嘻嘻。

1.工程结构和CMakeLists.txt代码
   整个工程的文件结构如下图:

   CMakeLists.txt文件的内容如下:

// creat by mengmeng

cmake_minimum_required(VERSION 2.8)

project(learning_to_create_project)

message("\n #### I love China! #### \n")

set(CMAKE_CXX_STANDARD 11)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

find_package(OpenCV REQUIRED)

include_directories(
        ${PROJECT_SOURCE_DIR}/include/
)

add_library(${PROJECT_NAME} SHARED
        src/China.cpp
        src/i.cpp
        src/love.cpp
)

add_executable(i_love_China example/i_love_China.cpp)
target_link_libraries(i_love_China
        ${OpenCV_LIBS}
        ${PROJECT_NAME}
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

2.简单解释

      我在这里采用了最为常见工程管理结构,你可以效仿这个结构来管理你的代码:
               src文件夹:存放.cpp文件
               include文件夹:存放.h头文件
               example文件夹:存放例子代码
               lib文件夹:存放编译时产生的链接库

命令介绍:

cmake_minimum_required(VERSION 2.8):cmake版本要求;

set(CMAKE_CXX_STANDARD 11):设置C++标准为C++11;

set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib):设置库文件输出到代码源路径下的lib文件夹中;

find_package:找到OpenCV的库,REQUIRED表示一定要找到这个库,找不到这个库,编译就直接结束,不再往下进行了;(这里只是示范写法,实际上没有用到OpenCV);

include_directories:用于包含头文件,需要指明头文件所在的目录,如果前面使用了find_package(x)去查找到了某一个库,那么就可以使用这个命令去包含这个库的头文件,例如:include_directories(${x_INCLUDE_DIRS}

target_link_libraries(i_love_China ${OpenCV_LIBS} ${PROJECT_NAME}):用于链接库文件。根据调库原则,一是要有库的头文件,二是要有库生成的共享或者静态链接库,include_directories命令已经包含了头文件,所以需要用target_link_libraries包含库文件,前一个参数表示的是可执行文件的名称,这个文件执行需要链接那些库,就全写在后面。

add_library:编译产生链接库,我这里产生的是动态链接库。如果你将自己的代码编译产生了库文件,那个你把库文件和头文件给别人,别人就可以调用你的函数执行相关计算工作了。

注意:以上是一个简单的工程,所有命令都是最简化使用,实际上它们还有很多别的有用的参数,你可以一边用一边学。

CMake命令的具体用法,请参考官方文件: CMake Tutorial

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/292900
推荐阅读
相关标签
  

闽ICP备14008679号