cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(ImageProc)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
find_package(PCL 1.2 REQUIRED)
find_package(OpenCV REQUIRED)
add_definitions( -fPIC -Wall -O3)
include_directories(${PCL_INCLUDE_DIRS})
#link_directories(${PCL_LIBRARY_DIRS}) Dont think neccesary..
add_definitions(${PCL_DEFINITIONS})
add_executable (ImageProc svm.cpp ImageProc.cpp testImageProc.cpp)
target_link_libraries (ImageProc ${OpenCV_LIBS} ${PCL_LIBRARIES})
add_library(ImageProcLib STATIC svm.cpp ImageProc.cpp)
target_link_libraries (ImageProcLib ${OpenCV_LIBS} ${PCL_LIBRARIES})
目前,我运行它并使用VS C ++打开并生成exe和lib。 exe在我的机器上运行。
目前的限制:
当我把exe传递给我的朋友时,他不能在他的机器上运行它,因为他遭到了许多丢失的dll的攻击。
当我使用lib文件时,要在VS C ++中创建一个新项目,找不到头文件会出现致命错误。
我知道,我可以手动添加所有dll和/或打包lib的所有头文件和库文件。但它也非常麻烦和丑陋。
问题:
CMake是否提供了一种方法,以便在编译时
答案 0 :(得分:0)
准备包以在其他开发环境中部署仍然是一项艰巨的任务。您需要正确设置自己的接口/ API,并且需要处理交叉dll问题,不同的运行时等。
但是,您可以使用CMake的一些工具:
查看Install和Export。您可以使用它来指定(在您的CMakeLists.txt中)部署所需的文件。这样,您可以标记哪些头文件,以及哪些目标(libs和exes)应该部署。
另请参阅CPack与NSIS的组合,可用于构建项目的NSIS安装程序。
您可以与InstallRequiredSystemLibraries和BundleUtilities一起准备install
或package
目标。另请参阅this和this问题,了解如何将第三方dll添加到此类部署包中。
InstallRequiredSystemLibraries对于将vcredist附加到您自己的软件包安装程序非常有用,如果您要在非开发PC上安装项目,那么您肯定需要这样做。