2016-11-23 6 views
2

私はC++開発とメイクファイルの一般的なアイデアが新しくなっています。私はUbuntu 16.04 LTSを使っています。CMakeLists.txtは使用可能なメイクファイルを作成しません(UbuntuとC++)

OpenCVライブラリを使用するaverage-color.cppをコンパイルしようとしています。

プロジェクトフォルダ:私は使用して作業ファイルをコンパイルすることができるよ

 
bin CMakeLists.txt img lib obj src 

./bin: 

./img: 
test.png 

./lib: 
core.hpp highgui.hpp imgproc.hpp opencv.hpp 

./obj: 
average-color.d calculate-average-color.d makefile-test.d 
average-color.o calculate-average-color.o makefile-test.o 

./src: 
average-color.cpp 

g++ average-color.cpp -o test `pkg-config --cflags --libs opencv` 

ながら、それは、符号誤りはないと信じて私をリードsrcディレクトリ、中Cmakeや見つけたMakefileの一部をコンパイルするとエラーになります。

以下は私のCMakeListsファイルです:

cmake_minimum_required(VERSION 2.8) 
PROJECT (name) 
find_package(OpenCV REQUIRED) 
set(NAME_SRC 
src/average-color.cpp  
) 

set(NAME_HEADERS  
    lib/core.hpp 
    lib/highgui.hpp 
    lib/imgproc.hpp 
    lib/opencv.hpp 
) 

    INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/lib) 
    link_directories(${CMAKE_BINARY_DIR}/bin) 
    set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) 
    add_executable(name ${NAME_SRC} ${NAME_HEADERS}) 

私は実行し、メイクファイルが生成され、 "cmakeのを。"。そこから、 "make"を実行すると失敗します:次の出力で(ここでうまくフォーマットできませんでした)。 http://textuploader.com/d5wks

私のCMakeLists.txtで誰かが驚くほど間違ったものを見つけた場合、説明してください。私はこのすべてを明確に説明していません。

+0

あなたの 'CMakeLists.txt'に' target_link_libraries() 'がありません – drescherjm

+0

どうしたらいいですか?私のlibフォルダ? –

+0

***私のlibフォルダ?***フォルダではなく個々のライブラリです。 @SteveThibaultはそれに答えました。 – drescherjm

答えて

1

はadd_executable後に次の行を追加します。

target_link_libraries(name ${OpenCV_LIBS}) 

これは、実行可能ファイルに特定のライブラリあなたのコードの参照をリンクするcmakeのを教えてくれます。リンクディレクトリを指定すると、それらのライブラリをどこに見つけるかリンカーに指示するだけで、target_link_librariesはリンクディレクトリ内でリンクするライブラリを指示します。

+0

これはうまくいきました、ありがとうございました。 –

+0

ようこそ。あなたはこの答えを受け入れることができますか? –

関連する問題