我创建了以下目录:
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
的链接。
答案 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。