CMake 错误:无法确定目标的链接语言

CMake Error: Cannot determine link language for target

本文关键字:链接 语言 目标 无法确定 错误 CMake      更新时间:2023-10-16

我创建了以下目录:

FrameWork/
├── CMakeLists.txt ==> contains only add_subdirectory(UtilsBasic)
└── UtilsBasic
    ├── CMakeLists.txt ==> Contains only add_subdirectory(SmartSingleton)
    └── SmartSingleton
        ├── CMakeLists.txt
        ├── include
        │   └── SmartSingleton.hpp

目录中SmartSingleton CMakeLists.txt包含:

set(codeprod_list
        include/SmartSingleton.hpp)
USR_add_shared_lib(SmartSingleton "${codeprod_list}")
target_link_libraries(SmartSingleton PUBLIC Common)
target_include_directories(SmartSingleton PUBLIC include/)

该项目的主要CMakeLists.txt如下:

cmake_minimum_required (VERSION 3.4)
project (MyProject)
USR_init_project(MyProject)
add_subdirectory(src/FrameWork)

错误

-- 配置完成 CMake 错误:CMake 无法确定

目标的链接器语言:智能单例 CMake 错误:无法确定链接 目标"智能单例"的语言。

我不明白为什么我会收到该错误。我的意思是,在Framework中,我创建了一个指向UtilsBasic的链接,进而创建了一个指向SmartSingleton的链接。

SmartSingleton/CMakeLists.txt文件中尝试一下:

set_target_properties(SmartSingleton PROPERTIES LINKER_LANGUAGE CXX)

这将直接告诉 CMake 为该目标使用哪种语言。

但是,如果您的库确实只是头文件,则您可能还会收到您提到的错误。考虑将此库设为INTERFACE库:

add_library(SmartSingleton INTERFACE)
target_include_directories(SmartSingleton INTERFACE include/)

以下是INTERFACE库的文档。