Cmake 错误:无法为目标指定链接库

Cmake error: Cannot specify link libraries for target

本文关键字:链接 目标 错误 Cmake      更新时间:2023-10-16

我正在尝试构建一个简单的CMake项目,但我在理解CMake或至少我得到的错误时遇到了问题。

我做的项目分为几个目录。 主要的有这个cmake:

cmake_minimum_required(VERSION 3.7.2)
project(Raytracer)
set(CMAKE_CXX_STANDARD 14)
add_subdirectory(src)
set(COMMON_INCLUDES ${PROJECT_SOURCE_DIR}/inc)

从那里我的项目分为 2 个文件夹 src 和 inc。 在 SRC 中,我有以下 cmake 的想法是全局所有子文件夹:

FILE(GLOB sub-dirs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *)
FOREACH(dir ${sub-dirs})
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${dir})
ADD_SUBDIRECTORY(${dir})
ENDIF()
ENDFOREACH()
add_executable(raytracer main.cpp)

我还在此主 src 文件夹中添加了可执行文件。 从那里开始,我希望能够使用自己的Cmake文件添加子文件夹,并将这些文件链接到我的可执行文件。 我有以下cmake:

set(OBJECTS
asdf.cpp
)
add_library(obj_files ${OBJECTS} ${COMMON_FILES})
target_link_libraries(raytracer obj_files)

但是当我尝试构建时,出现以下错误:

Cannot specify link libraries for target "raytracer" which is not built by this project.

基本上Cmake文件中或toolchain.cmake命令的顺序很重要!target_link_libraries()target_include_directories()必须始终after add_executable()