現在、CMake プロジェクトを Linux から OpenCV に依存する Windows に移行しようとしていますが、ライブラリを実行可能ファイルにリンクするのに問題があります。
いくつかのプライベートなものを省略して、おおよその CMakeLists.txt ファイルを以下に投稿しました。
project(my_project_name)
cmake_minimum_required(VERSION 2.8)
SET(CMAKE_CXX_FLAGS "-g -Wall")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
FIND_PACKAGE(OpenCV REQUIRED)
IF(NOT OpenCV_FOUND)
MESSAGE(FATAL_ERROR "OpenCV not found")
ENDIF()
SET(PROJECT_HDRS
#headers here
)
SET(PROJECT_SRCS
#sources here
)
add_executable(${PROJECT_NAME} ${PROJECT_SRCS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})
この CMakeLists.txt ファイルは Linux では問題なく動作しますが、Windows ではリンクに問題があります。私の最初の本能は、それが OpenCV の不適切なインストールだったということでしたか? OpenCVのインストール中に使用したおおよその手順は次のとおりです
- OpenCV 2.4.3 実行可能ファイル (自己解凍アーカイブ) をダウンロードします。
- いくつかのディレクトリに解凍します
- CMake-Gui を使用して OpenCV.sln を構成および生成する
- Visual Studio C++ 2010 Express で開き、デバッグ構成とリリース構成で ALL_BUILD プロジェクトをビルドします。
- INSTALL プロジェクトをビルドする
独自のプロジェクトをビルドしようとすると、「'cv::waitKey(int)' への未定義の参照」エラーが返され、リンカーの問題であると思われます。.lib ファイルを直接指定しようとしました、 そのような:
target_link_libraries(${PROJECT_NAME} C:/someDirectory/opencv_core243.lib)
それでも同じエラーが返されます。
これらの StackOverflow スレッドで説明されている方法も試しました: hereおよびhere。
明白な何かが欠けている場合は事前にお詫びしますが、Windows での開発は多かれ少なかれ初めてであり、アイデアが不足しています。