2013-08-14 2 views
8

Возможно, мне что-то не хватает, но я не могу построить статические библиотеки opencv.Построение OpenCV как статических библиотек

Установка:

Kubuntu 12,04

GCC 4.6.3

сделать 3,81

CMake 2.8.7

OpenCV 2.4.6.1 (последний доступный на сайте)

Я выполняю всю работу вручную. Я пробовал с cmake-gui без каких-либо успехов.

Делаю, что написано.

$ CMake -D CMAKE_BUILD_TYPE = RELEASE -D CMAKE_INSTALL_PREFIX =/USR/местные -Д BUILD_PYTHON_SUPPORT = ON -D WITH_QT = ON -D BUILD_SHARED_LIBRARIES = OFF ..

(я также попытался с BUILD_SHARED_LIBRARIES = NO)

Что я получаю (для ядра, например):

  • libopencv_core.so
  • libopencv_core.so.2.4
  • libopencv_ core.so.2.4.6
  • libopencv_core_pch_dephelp.a

Сказать правду, я ожидал libopencv_core.a.

Я новичок с созданием пакетов/библиотек на Linux. Я уверен, что я сделал что-то не так, но я не знаю, что. Также я не хочу использовать динамические библиотеки ...

Спасибо за помощь!

EDIT Удалены пустое пространство между -D ... в CMake командной строке

Result: 

-- General configuration for OpenCV 2.4.6.1 ===================================== 
-- Version control:    unknown 
-- 
-- Platform: 
--  Host:      Linux 3.2.0-51-generic x86_64 
--  CMake:      2.8.7 
--  CMake generator:    Unix Makefiles 
--  CMake build tool:   /usr/bin/make 
--  Configuration:    RELEASE 
-- 
-- C/C++: 
--  Built as dynamic libs?:  YES 
--  C++ Compiler:    /usr/bin/c++ (ver 4.6) 
--  C++ flags (Release):   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG -DNDEBUG 
--  C++ flags (Debug):   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3 
--  C Compiler:     /usr/bin/gcc 
--  C flags (Release):   -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -O3 -DNDEBUG -DNDEBUG 
--  C flags (Debug):    -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -Wno-delete-non-virtual-dtor -Wno-unnamed-type-template-args -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -msse -msse2 -msse3 -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3 
--  Linker flags (Release):  
--  Linker flags (Debug):   
--  Precompiled headers:   YES 
-- 
-- OpenCV modules: 
--  To be built:     core imgproc flann highgui features2d calib3d ml video objdetect contrib photo legacy gpu nonfree java python stitching superres ts videostab 

...

-- Configuring done 
-- Generating done 
CMake Warning: 
    Manually-specified variables were not used by the project: 

    BUILD_PYTHON_SUPPORT 
    BUILD_SHARED_LIBRARIES 

Я все еще вижу Построенный как динамические LIBS ?: ДА и это говорит мне, что он не заботится о переменной BUILD_SHARED_LIBRARIES!

+0

Вы пробовали вызова CMake без пробелов между '-D' флагов и их значения? Так, например, 'cmake. -DCMAKE_BUILD_TYPE = Релиз ...-DBUILD_SHARED_LIBRARIES = OFF' – Fraser

+0

Я пробовал это безуспешно. См. ** ИЗМЕНИТЬ ** в моем вопросе. –

+1

Глупый я! Это ** - DBUILD_SHARED_LIBS = NO **! Не BUILD_SHARED_LIBRARIES ... –

ответ

15

Глядя на OpenCV's CMakeLists.txt, кажется, что вы используете неправильные имена для опций OpenCV CMake.

BUILD_SHARED_LIBRARIES должен быть BUILD_SHARED_LIBS и BUILD_PYTHON_SUPPORT должны быть BUILD_opencv_python

+0

Удивительно видеть, как неприятные проблемы имеют простые решения! (может быть, наоборот, это правда!) Спасибо! –