在 CMake 下的多个组之间共享文件

佩德罗·罗伊奥斯

我正在尝试为具有以下结构的项目创建 CMake 设置:

workshop
|    CMakeLists.txt
|    utilities
|    |    utilities.h
|    |    utilities.cpp
|    |    CMakeLists.txt
|    week_1
|    |    week_1.h
|    |    week_1.cpp
|    |    main.cpp
|    |    CMakeLists.txt
|    week_2
|    |    main.h
|    |    week_2.cpp
|    |    main.cpp
|    |    CMakeLists.txt

一切都取决于 OpenCV,而 week_X 中的程序也取决于实用程序。

除了与公用事业的联系之外,我能够做所有事情。

我的审判:

文件研讨会\CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)
PROJECT(workshop)

SET(OpenCV_DIR OPENCV_DIR)
find_package( OpenCV REQUIRED )

include_directories( ${OpenCV_INCLUDE_DIRS})
add_subdirectory(${CMAKE_SOURCE_DIR}/utilities)
add_subdirectory(${CMAKE_SOURCE_DIR}/week_1)
add_subdirectory(${CMAKE_SOURCE_DIR}/week_2)

文件 week_1\CMakeLists.txt (week_2\CMakeLists.txt 是相同的,只是 1 x 2 改变)

cmake_minimum_required(VERSION 2.8.12)

include_directories( ${OpenCV_INCLUDE_DIRS})
set(SRCFILES week_1.cpp week_1.h main.cpp)
source_group(week_1 FILES ${SRCFILES})
add_executable(week_1 ${SRCFILES})
target_link_libraries(week_1 ${OpenCV_LIBS})

一切都好,直到公用事业。实用程序\CMakeLists.txt 怎么样?

马蒂比

我想你想utilities成为一个图书馆。

在实用程序 CMakeLists.txt

# This will create libutilities.a
add_library(utilities
   utilities.cpp
)

target_include_directories( utilities PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
    # Third party libs
    ${OpenCV_INCLUDE_DIRS}

)

target_link_libraries(utilities
    ${OpenCV_LIBRARIES}
)

在 week_X 中,您将像这样将其用作库:

include_directories(
    ${OpenCV_INCLUDE_DIRS} 
    ${CMAKE_SOURCE_DIR}/utilities # Include utilities header
)

set(SRCFILES week_1.cpp week_1.h main.cpp)
source_group(week_1 FILES ${SRCFILES})
add_executable(week_1 ${SRCFILES})

target_link_libraries(
   ${OpenCV_LIBS}
   utilities # Link to libutilites.a
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章