![](/img/trans.png)
[英]How to test if all headers in the project are self-contained with CMake?
[英]How to build an executable with Cmake where all the dependence are contained in the project DIR?
我在一個使用OpenCV和Dlib的項目中,我希望該項目可以跨平台並且是獨立的。 因此,我只需要將項目Dir復制到另一個平台上,就可以通過執行cmake來獲取exe。
DIR:
project/
opencv-3.2.0
|
dlib-19.2
|
include
|
source
其中“ opencv-3.2.0”和“ dlib-19.2”包含從官方站點下載的庫的相應源代碼。 “ include”和“ source”分別包含我的.h和.cpp。
到目前為止,這是我想出的CMakeLists.txt:
cmake_minimum_required(VERSION 3.1)
project(visionBean)
set (OPENCV_VERSION_DIR_NAME ${PROJECT_SOURCE_DIR}/opencv-3.2.0)
set (DLIB_VERSION_DIR_NAME ${PROJECT_SOURCE_DIR}/dlib-19.2)
#setup opencv
add_subdirectory(${OPENCV_VERSION_DIR_NAME})
include_directories( ${OpenCV_INCLUDE_DIRS} )
#setup dlib
add_subdirectory(${DLIB_VERSION_DIR_NAME})
include_directories( ${DLIB_INCLUDE_DIRS} )
#files for main project
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/source)
file(GLOB ${PROJECT_NAME}_INC "${PROJECT_SOURCE_DIR}/include/*.h")
file(GLOB_RECURSE ${PROJECT_NAME}_SRC "${PROJECT_SOURCE_DIR}/source/*.cpp")
add_executable(${PROJECT_NAME} source/demo.cpp)
target_link_libraries(${PROJECT_NAME}_LINKER ${OpenCV_LIBS} ${DLIB_LIBS})
如果有人以前這樣做過,您能告訴我如何做到這一點,或者請向我指出正確的方向嗎? 謝謝
編輯我遇到的拳頭變形錯誤是:
CMake錯誤:CMake無法確定目標的鏈接器語言:opencv_xxx
我認為這不會起作用。 您要添加一個完整的項目作為子目錄。
opencv本身是一個CMake項目,因為它的頂層CMakeList.txt具有一個project
命令,它不僅僅是一個子目錄。
您可以修改opencv CMakeLists.txt,使其成為一個純子目錄,但我不建議這樣做,只需編寫一個腳本(對於Linux,*。sh,對於Windows * .bat)來為每個項目調用cmake。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.