常见cmake命令总结
cmake常见命令
- cmake_minimum_required - 指定CMake的最小版本要求
cmake_minimum_required (VERSION 2.8)
project (PROJECT_NAME)
set(SRC main.cpp hello.cpp)
# 将main.cpp和hello.cpp定义为SRC
add_compile_options(-Wall -std=c++17 -O2 -g)
# 这是对于所有的编译器增加的编译器参数,如果想只针对g++编译器可以用下面这个命令
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS} -g -O2 -std=c++17")
aux_source_directory(. SRC)
# 搜索当前目录下的源文件定义为SRC
- CMAKE_BUILD_TYPE 编译类型(Debug, Release)
set(CMAKE_BUILD_TYPE Debug)
#相当于-I命令
include_directories(./include /usr/build/include)
#相当于-L命令
link_directories(/usr/build/lib ./lib)
# add_library(libname [SHARED|STATIC|MODULE] [EXCLUDE_FROM_ALL] source1 source2 ... sourceN)
add_library(hello SHARED ${SRC})
add_executable(main ${SRC} main.cpp)
#相当于-l命令
# add_library(hello SHARED ${SRC})
target_link_libraries(main hello)
# 将动态库hello链接到可执行文件main
add_subdirectory(src)
# 子文件夹中必须也有CMakeLists.txt
示例
项目文件夹目录:
src子文件夹:
test子文件夹:
utils子文件夹:
项目主文件夹的CMakeLists.txt:
project (feature_detection)
cmake_minimum_required(VERSION 3.0)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
find_package(OpenCV 4.5.1 REQUIRED)
MESSAGE ( STATUS "OpenCV library status:" )
MESSAGE ( STATUS "version ${OpenCV_VERSION}" )
MESSAGE ( STATUS "libraries ${OpenCV_LIBS}" )
MESSAGE ( STATUS "include path ${OpenCV_INCLUDE_DIRS}" )
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_SOURCE_DIR}/utils)
add_subdirectory(utils)
add_subdirectory(src)
add_subdirectory(test)
src子文件夹CMakeLists.txt:
add_library(LoG LoG.cpp)
target_link_libraries(LoG ${OpenCV_LIBS} utils)
add_library(harris_corner harris_corner.cpp)
target_link_libraries(harris_corner ${OpenCV_LIBS} utils)
add_library(canny canny.cpp)
target_link_libraries(canny ${OpenCV_LIBS} utils)
utils子文件夹CMakeLists.txt:
add_library(utils
display.cpp
tictoc.cpp
opencv_utils.cpp
)
target_link_libraries(utils ${OpenCV_LIBS})
test子文件夹CMakeLists.txt:
add_executable(test_LoG test_LoG.cpp)
target_link_libraries(test_LoG LoG ${OpenCV_LIBS} utils)
add_executable(test_harris_corner test_harris_corner.cpp)
target_link_libraries(test_harris_corner harris_corner ${OpenCV_LIBS} utils)
add_executable(test_canny test_canny.cpp)
target_link_libraries(test_canny canny ${OpenCV_LIBS} utils)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)