CMakeList创建工程及CmakeLists.txt配置

cmake_minimum_required(VERSION 2.6)

project(MobileNet-Yolo-Demo) #设置项目名称
set(TARGET_NAME detect) #设置目标文件名称
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)  #设置可执行文件的输出目录
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)  #设置库文件的输出目录

#set(CMAKE_BUILD_TYPE "Release") #设置编译Release 还是Debug版本(Release Debug)
#set(CMAKE_DEBUG_POSTFIX "d") #debug 后缀

# you have add link directories before add target
#opencv3.4.6
include_directories("/usr/local/include") #头文件路径
include_directories("/usr/local/include/opencv")
include_directories("/usr/local/include/opencv2")
link_directories("/usr/local/lib") #库路径
set(OPENCV_LIBS opencv_core opencv_imgcodecs
                opencv_highgui opencv_imgproc
                opencv_videoio)
link_libraries(${OPENCV_LIBS}) #链接共享库

#caffe
include_directories("${PROJECT_SOURCE_DIR}/3rdparty/Caffe-Mobilenet-YOLOV3/include")
link_directories("${PROJECT_SOURCE_DIR}/3rdparty/Caffe-Mobilenet-YOLOV3/lib")
set(CAFFE_LIBS caffe)
link_libraries(${CAFFE_LIBS})

#cuda cudnn
include_directories("/usr/local/cuda/include")
link_directories("/usr/local/cuda/lib64")
set(CUDA_LIBS cudart cublas curand)
link_libraries(${CUDA_LIBS})

#caffe addition
set(CAFFE_ADD_LIBS glog gflags protobuf boost_system boost_thread lmdb leveldb stdc++ cblas atlas cudnn)
link_libraries(${CAFFE_ADD_LIBS})

include_directories("${PROJECT_SOURCE_DIR}/include")

file(GLOB SOURCE 
          "src/*.cpp"
          "src/common/*.cpp") #添加源文件,可添加不同路径下的源文件

add_definitions(-std=c++11)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
#add_definitions(-DARCH_ARM) #定义宏ARCH_ARM

add_executable(${TARGET_NAME} ${SOURCE} )#编译生成可执行文件
#add_library(${TARGET_NAME} SHARED ${SOURCE} )#生成动态库
#add_library(${TARGET_NAME} STATIC ${SOURCE} )#生成静态库








目录结构

test---------
    |--include
    |--src
    |      |-----main.cpp
    |      |-----common
    |                   |-----base.cpp
    |--bin
    |--build
    |--3rdparty
    |--CMakeLists.txt
cd test
mkdir build
cmake ..
make clean
make -j4

源文件位于多目录下时,直接在file后加上即可例如("src/common/*.cpp")

自己整理的一套模板,入门级别。

=========================

qt中直接打开CMakeLists.txt即可,
然后在project中配置build的目录为cmake编译的build路径即可.先在项目名称那里点击鼠标右键,有个Run Cmake,然后在F5

远程调试开发板设置

Remote Directory: 基础路径为远程开发板上的~(/home/nvidia/)路径, 所以此处../bin实际为/home/nvidia/../bin(/home/bin),这个路径可以配置,本地是基于build的路径为基础路径,所以/xx/prj/build == /home/xx.

SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/ZS207/test") //build的路径
SET(LIBRARY_OUTPUT_PATH "${PROJECT_BINARY_DIR}/ZS207/test")

LINK_DIRECTORIES("${PROJECT_BINARY_DIR}/ZS207/test")

file(COPY "${PROJECT_BINARY_DIR}/ZS207/test/" DESTINATION "${PROJECT_SOURCE_DIR}/bin")
 

#########################参考文章##############################

https://blog.csdn.net/nan_feng_yu/article/details/80808773

cmake_minimum_required(VERSION 3.11)

define_source_files()

Project(CmakeTest)
aux_source_directory(. src)
#add_executable(project1 ${src})                        #编译为可执行程序
#add_library(project1 ${src})                           #编译为静态库
#add_library(project1 SHARED ${src})                    #编译为动态链接库

#add_executable(project1 MACOSX_BUNDLE ${src})          #编译为可执行程序 *.app

#add_library(project1 MODULE ${src})                    #编译为程序资源包 *.bundle
#set_target_properties(project1 PROPERTIES BUNDLE TRUE)

#add_library(project1 SHARED ${src})                     #编译为程序资源包 *.framework
#set_target_properties(project1 PROPERTIES FRAMEWORK TRUE)

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")  # Debug模式下的编译指令
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")         # Release模式下的编译指令

#SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)       #设置可执行文件的输出目录

#SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)           #设置库文件的输出目录


#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/bin)   

#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/../bin) 

#上面两条语句分别设置了Debug版本和Release版本可执行文件的输出目录,

#一旦设置上面的属性,在任何环境下生成的可执行文件都将直接放在你所设置的目录.

#四. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/../lib)    
#    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/../lib) 

#上面两条语句分别设置了Debug版本和Release版本库文件的输出目录,

#一旦设置上面的属性,在任何环境下生成的库文件都将直接放在你所设置的目录.

你可能感兴趣的:(cmake)