web-dev-qa-db-ja.com

CMakeエラー:「ターゲットはこのプロジェクトによってビルドされていません」

ぼくの CMakeLists.txtファイルは:

cmake_minimum_required(VERSION 3.7)
project(OpenCV_Basics)

set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES main.cpp)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_LIBS})
target_link_libraries(OpenCV_Basics )

add_executable(OpenCV_Basics ${SOURCE_FILES})

Main.cppをコンパイルしようとすると、行き詰まってしまいました。

CMake Error at CMakeLists.txt:10 (target_link_libraries):
  Cannot specify link libraries for target "OpenCV_Basics" which is not 
built
  by this project.

どうしましたか?

Mac上のClionで作業しています。

7
Poodar

add_executableはターゲットを定義しますが、コードでは、ターゲットを定義しますafterコンパイルしようとします。

これら2つの行の位置を変更するだけです。

  • 最初にターゲットを定義します

  • ライブラリをリンクします。

このような

add_executable(OpenCV_Basics ${SOURCE_FILES})
target_link_libraries(OpenCV_Basics )
8
Tomaz Canabrava

CMakeコマンドがtarget引数を受け入れる場合、指定されたターゲットがすでに作成されているであると想定します。

正しい使い方:

# Create target 'OpenCV_Basics' 
add_executable(OpenCV_Basics ${SOURCE_FILES})
# Pass the target to other commands
target_link_libraries(OpenCV_Basics ${OpenCV_LIBRARIES})
6
Tsyvarev