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

时间:2019-06-05 14:19:29

标签: c++ cmake

我创建了以下目录:

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

CMakeLists.txt目录中的SmartSingleton包含:

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无法确定目标:SmartSingleton的链接器语言CMake错误:无法确定链接   目标“ SmartSingleton”的语言。

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

1 个答案:

答案 0 :(得分:1)

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

set_target_properties(SmartSingleton PROPERTIES LINKER_LANGUAGE CXX)

这将直接告诉CMake用于该目标的语言。

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

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

这是INTERFACE库的docs