工程系列-CMakeLists.txt

1、cmake_minimum_required(VERSION 2.8)

cmake最低版本,如果CMake的当前版本低于指定的版本,它会停止处理工程文件,并报告错误

2、project(<projectname> [languageName1 languageName2 ...])

projectname:工程名

languageName:指定工程可以支持的语言。如project(Hello,C CXX),CXX即是C++

3、set( CMAKE_CXX_FLAGS "-std=c++11" )

添加c++11标准支持

4、find_package(包的名称及最低版本)

找到后面需要库和头文件的包

例如find_package(OpenCV 2.4.3 REQUIRED)

5、include_directories("路径")

头文件

#include_directories(

      ${PROJECT_SOURCE_DIR}

      ${PROJECT_SOURCE_DIR}/include

      ${EIGEN3_INCLUDE_DIR}

6、set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)

设置路径(下面生成共享库的路径),即生成的共享库在工程文件夹下的lib文件夹中

7、add_library(${PROJECT_NAME} SHARED src/cpp文件名 …… )

创建共享库(把工程内的cpp文件都创建成共享库文件,方便通过头文件来调用)

这时候只需要cpp,不需要有主函数

${PROJECT_NAME}是生成的库名 表示生成的共享库文件就叫做 lib工程名.so  

也可以专门写cmakelists来编译一个没有主函数的程序来生成共享库,供其它程序使用

8、target_link_libraries(${PROJECT_NAME} /usr/lib/i386-linux-gnu/libboost_system.so )

链接库,把刚刚生成的${PROJECT_NAME}库和所需的其它库链接起来

9、set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

设置可执行文件生成路径

10、add_executable(要生成的可执行文件名 从工程目录下写起的主函数文件名)

可执行文件生成,凡是要编译的源文件都需要列举出来。

add_executable(hello_world src/hello_world.cpp src/main.cpp)

12、set(<variable> <value> [[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE]

)

将一个CMAKE变量设置为给定值

SET(CMAKE_BUILD_TYPE Release)

设置编译方式为Release,如果要求有比较高德运行方式,建议选择Release

如:

IF(NOT CMAKE_BUILD_TYPE)

        SET(CMAKE_BUILD_TYPE Release)

13、AUX_SOURCE_DIRECTORY(src DIR_SRCS)

源文件目录

14、cmake_policy

管理CMake的策略设置

 

C++创建工程如下:

$mkdir hellotest

$cd hellotest

$mkdir bin #可执行文件存放路径

$mkdir lib  #生成的.so文件存放路径

$mkdir include #头文件存放路径

$mkdir src #源文件存放路径

$mkdir build #编译文件存放路径

$touch CMakeLists.txt

$cd build

$cmake ..

$make
 

转载:Cmake写法 https://blog.csdn.net/zhanghenan123/article/details/81952015

Opencv注意事项 https://blog.csdn.net/u012816621/article/details/51732932

注意事项:在引入opencv的一些注意事项

1、find_package(OpenCV REQUIRED)中的OpenCV一定要遵循该大小写。 
  因为该句话是根据OpenCV作为前缀自动去/usr/local/share/OpenCV(如果你的opencv安装时,默认前缀设置为:/usr/local时)文件夹中去找OpenCVConfig.cmake,OpenCV-config.cmake 两个文件,进而确定你要引入的opencv头文件和库函数在哪里。
 

一份模板,大家根据自己日后需求一步一步添加。

# cmake最低版本,如果CMake的当前版本低于指定版本,它会停止处理工程文件,并报告错误。
cmake_minimum_required (VERSION 2.8.8)
# 工程名
project (tf_example)
 # 添加C++11标准支持
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++11 -W")
link_directories(./lib)
# 找到后面需要的库和头文件的包
find_package(OpenCV REQUIRED)
# 头文件
include_directories(
   /home/zou/code/tensorflow
   /home/zou/code/tensorflow/bazel-genfiles
   /home/zou/code/tensorflow/bazel-bin/tensorflow
   /usr/local/include/eigen3
   /home/zou/code/tensorflow/tensorflow/contrib/makefile/downloads/absl
   /usr/local/include/google/protobuf
   /home/zou/code/tensorflow/tensorflow/contrib/makefile/downloads/nsync/public
   ${OpenCV_INCLUDE_DIRS}
   )

# 添加可执行文件 (目标生成名字,可执行文件夹)
add_executable(tf_test  main_v1.cc) 
# 目标库 (生成 依赖lib)
target_link_libraries(tf_test tensorflow_cc tensorflow_framework ${OpenCV_LIBS})

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值