簡體   English   中英

如何使用Cmake構建可執行文件,其中所有依賴項都包含在項目DIR中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM