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 は方法を提供しますか?
- exe (必要なすべての dll を bin ディレクトリに自動的に見つけます)
- libに(すべてのヘッダーファイルと、リンク部分に必要なライブラリをlibディレクトリに自動的にソースします)