2012-12-20 11 views
20

Uważam to za podstawowy krok do tworzenia projektów wykorzystujących biblioteki OpenCV, więc nie trzeba ręcznie włączać wszystkich bibliotek. Nie ma szczegółowych informacji na ten temat, przynajmniej dla początkujących, którzy chcą używać OpenCV tak szybko, jak to tylko możliwe, więc:Konfigurowanie projektu C++ OpenCV z Cmake

Jaki jest najprostszy i skalowalny sposób na stworzenie wieloplatformowego OpenSS z Cmake?

Odpowiedz

27

pierwsze: utworzyć folder projekt zawierający dwa podfoldery src i obejmują, a plik o nazwie CMakeLists.txt.

Po drugie: Umieść plik cpp wewnątrz folderu src i nagłówków w folderach dołączania.

trzecie: Twój CMakeLists.txt powinna wyglądać następująco:

cmake_minimum_required(VERSION 2.8) 
PROJECT (name) 
find_package(OpenCV REQUIRED) 
set(NAME_SRC 
    src/main.cpp  
) 

set(NAME_HEADERS  
    include/header.h 
) 

INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) 
link_directories(${CMAKE_BINARY_DIR}/bin) 
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 
add_executable(name ${NAME_SRC} ${NAME_HEADERS}) 

target_link_libraries(sample_pcTest ${OpenCV_LIBS}) 

czwarte: Otwórz CUpewnij GUI i wybierz folder główny jako wejście i utworzyć folder build dla wyjścia. Kliknij configure, następnie wygeneruj i wybierz generator (VisualStudio, Eclipse, ...)

+3

Nie polecam używania "link_directories" - zamiast tego podaj pełne nazwy ścieżek do bibliotek wymaganych jako argumenty dla target_link_libraries. Dokumenty dla katalogów linków (http://cmake.org/cmake/help/v2.8.10/cmake.html#command:link_directories) mówią "Zauważ, że to polecenie rzadko jest konieczne." – DLRdave

+1

Możesz pominąć NAME_HEADERS - CMake skanuje pliki źródłowe, aby określić zależności plików nagłówkowych. –

+0

@DLRdave W Windows będziesz potrzebował 'link_directories ($ {OpenCV_LIB_DIR})' ponieważ wartość zwrócona w '$ {OpenCV_LIBS}' zawiera tylko nazwy bibliotek (nie pełną ścieżkę). Jeśli chcesz, aby '$ {OpenCV_LIBS}' zawierało ścieżki biblioteki, potrzebujesz 'find_package (Open Core REQUIRED core imgproc ...)'. Podczas budowania statycznego oznacza to dodanie każdego modułu opencv do wywołania 'find_package'. –

2

Używam konfiguracji opencv3.0 i cmake3.8, poniżej dla mnie!

######## A simple cmakelists.txt file for OpenCV() ############# 
cmake_minimum_required(VERSION 2.8)       # 初始化Cmake版本检测 
PROJECT(word)          # 工程名 

FIND_PACKAGE(OpenCV REQUIRED)        # 环境变量中寻找OpenCV的库的位置 
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) 

ADD_EXECUTABLE(word main.c)       # 将文件加入工程,有多少.c或者cpp都加进去 
TARGET_LINK_LIBRARIES (word ${OpenCV_LIBS})   # 这两行的次序也不能变!加入动态链接库 
########### end #################################### 
+0

oprócz wywołania "include_directories()" nie jest wymagane dla CMake> = 2.8.11 jest to jedyna właściwa droga. A samozatwierdzona odpowiedź jest co najmniej myląca. – Slava

Powiązane problemy