CMakeList教程

 

  • 项目ID
    project(CameraSDK)
  • 转换相对路径
    file(RELATIVE_PATH relativeIncludePathFile "${CMAKE_CURRENT_SOURCE_DIR}" "${includeFile}")
  • 拷贝头文件
    foreach(includeFile ${CameraSDKIncludes})
    message("-- Copying ${includeFile}")
    file(RELATIVE_PATH relativeIncludePathFile "${CMAKE_CURRENT_SOURCE_DIR}" "${includeFile}")
    configure_file(${includeFile} ${PROJECT_INCLUDE_DIR}/CameraSDK/${relativeIncludePathFile} COPYONLY)
    endforeach()
  • 11

 

cmake_minimum_required(VERSION 2.8)

# determine if jetson-utils is being built as a submodule inside another repo,
# or if it's being build standalone (if the later, we need to do some configuration)
get_directory_property(hasParent PARENT_DIRECTORY)

if(hasParent)
message("-- CameraSDK: building as submodule, ${hasParent}")
else()
message("-- CameraSDK: building as standalone")
 
# standalone project
project(CameraSDK)
 
# -std=gnu++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wno-write-strings")
 
# setup project output paths
set(PROJECT_OUTPUT_DIR ${PROJECT_BINARY_DIR}/${CMAKE_SYSTEM_PROCESSOR})
set(PROJECT_INCLUDE_DIR ${PROJECT_OUTPUT_DIR}/include)

file(MAKE_DIRECTORY ${PROJECT_INCLUDE_DIR})
file(MAKE_DIRECTORY ${PROJECT_OUTPUT_DIR}/bin)

message("-- system arch: ${CMAKE_SYSTEM_PROCESSOR}")
message("-- output path: ${PROJECT_OUTPUT_DIR}")

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_OUTPUT_DIR}/lib)
 
# build C/C++ interface
include_directories(${PROJECT_INCLUDE_DIR})

endif()


# additional paths for includes and libraries
include_directories(${PROJECT_INCLUDE_DIR}/CameraSDK)
link_directories(/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/gstreamer-1.0)
link_libraries(gstreamer-1.0 gobject-2.0 gstapp-1.0 glib-2.0)

include_directories(/usr/include/glib-2.0 /usr/lib/x86_64-linux-gnu/glib-2.0/include/ /usr/include/gstreamer-1.0 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/include/)

# build library
file(GLOB CameraSDKSources *.cpp Camera/*.cpp Code/*.cpp)
file(GLOB CameraSDKIncludes *.h *.hpp Camera/*.h Code/*.h)

add_library(CameraSDK SHARED ${CameraSDKSources})

# transfer all headers to the include directory
file(MAKE_DIRECTORY ${PROJECT_INCLUDE_DIR}/CameraSDK)

foreach(includeFile ${CameraSDKIncludes})
message("-- Copying ${includeFile}")
file(RELATIVE_PATH relativeIncludePathFile "${CMAKE_CURRENT_SOURCE_DIR}" "${includeFile}")
configure_file(${includeFile} ${PROJECT_INCLUDE_DIR}/CameraSDK/${relativeIncludePathFile} COPYONLY)
endforeach()

# build tests/sample executables
#add_subdirectory(Camera)
#add_subdirectory(Code)




posted @ 2022-05-31 16:49  agui2022  阅读(171)  评论(0编辑  收藏  举报