ubuntu编译时常用的指令汇总:
cmake_minimum_required(VERSION 3.0) //cmake版本
PROJECT(test) //工程名字
//判断是否支持C++11
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -lglog -fPIC")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -pthread -lglog -fPIC")
else()
//消息打印
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
//发现opencv文件
find_package(OpenCV REQUIRED)
//包含当前工程的头文件,包含多个
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include/3rdParty)
include_directories(${PROJECT_SOURCE_DIR}/include/nn)
include_directories(${PROJECT_SOURCE_DIR}/include/cuda)
include_directories(${PROJECT_SOURCE_DIR}/include/common)
include_directories(${PROJECT_SOURCE_DIR}/include/attrs)
///在目录中查找所有源文件
//收集指定目录中所有源文件的名称,并将列表存储在提供的<SRCS>变量中。
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src SRCS)
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src SRCS)
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/3rdParty SRCS_3rdParty)
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/nn SRCS_nn)
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/common SRCS_common)
AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/attrs SRCS_attrs)
//链接库文件,链接库路径,可以设置为当前下的lib文件
#####################
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/libs
)
LINK_DIRECTORIES(/usr/lib)
#####################
add_executable(demo demo.cpp) # 生成可执行文件
add_library(common STATIC util.cpp) # 生成静态库
add_library(common SHARED util.cpp) # 生成动态库或共享库
ADD_LIBRARY(test SHARED ${SRCS} ${PROJECT_SOURCE_DIR}/src/cuda/customPReLU.cu ${PROJECT_SOURCE_DIR}/src/cuda/CorrelationPlugin.cu
${SRCS_3rdParty} ${SRCS_cuda} ${SRCS_nn} ${SRCS_common} ${SRCS_attrs})
//设置 target 需要链接的库
target_link_libraries( # 目标库
demo
# 目标库需要链接的库
# log-lib 是上面 find_library 指定的变量名
${log-lib} )