如何使用 cmake 设置 OpenCV 以启用动态和静态构建?
How to set up OpenCV with cmake to enable dynamic and static builds?
我已经使用 SHARED_LIBS 在我的 mac 上构建并 make install
编辑了 opencv。
如果我使用或不使用共享库构建,我希望能够为每个项目选择。
当我使用 -DBUILD_SHARED_LIBS=OFF
编译额外的 OpenCV 构建时,如何在我的项目 CMakeLists
中引用它并选择我想要的构建类型?
我的 ~/opencv
中有共享库的源代码,我已经在 ~/opencv/build
中编译了它,然后是 make install
。
当我创建另一个像 ~/opencv/static_build
这样的目录时,我必须如何调整我的 CMakeLists
才能制作静态构建应用程序?到目前为止我用过:
find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(test ${OpenCV_LIBS})
但如果我没记错的话,这些行都依赖于在我最初 make install
期间添加到 cmake 的变量。
它的工作原理是为每个构建使用 cmake 标志 -D CMAKE_INSTALL_PREFIX
配置不同的安装位置,然后 make install
将它们安装到各自的位置。
为了区分特定构建并允许 cmake 找到不在其路径中的库,必须将以下行添加到项目的 CMakeLists.txt
:
set(OpenCV_DIR /path/to/build/lib/cmake)
之前:
find_package( OpenCV REQUIRED )
我已经使用 SHARED_LIBS 在我的 mac 上构建并 make install
编辑了 opencv。
如果我使用或不使用共享库构建,我希望能够为每个项目选择。
当我使用 -DBUILD_SHARED_LIBS=OFF
编译额外的 OpenCV 构建时,如何在我的项目 CMakeLists
中引用它并选择我想要的构建类型?
我的 ~/opencv
中有共享库的源代码,我已经在 ~/opencv/build
中编译了它,然后是 make install
。
当我创建另一个像 ~/opencv/static_build
这样的目录时,我必须如何调整我的 CMakeLists
才能制作静态构建应用程序?到目前为止我用过:
find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(test ${OpenCV_LIBS})
但如果我没记错的话,这些行都依赖于在我最初 make install
期间添加到 cmake 的变量。
它的工作原理是为每个构建使用 cmake 标志 -D CMAKE_INSTALL_PREFIX
配置不同的安装位置,然后 make install
将它们安装到各自的位置。
为了区分特定构建并允许 cmake 找到不在其路径中的库,必须将以下行添加到项目的 CMakeLists.txt
:
set(OpenCV_DIR /path/to/build/lib/cmake)
之前:
find_package( OpenCV REQUIRED )