首页 > 解决方案 > CMake 与 Eigen 的链接错误“CMake 无法确定目标的链接器语言”

问题描述

让我先显示目录树和代码。

eigen-git-mirror // from https://github.com/eigenteam/eigen-git-mirror
CMakeLists.txt // (1)
main.cpp
CODES
--CMakeLists.txt
--A
----*.hpp
----**.hpp
----...
--B
----*.hpp
----**.hpp
----...
--CMakeLists.txt // (2)

CMakeLists.txt (1)

cmake_minimum_required (VERSION 3.0)

project(PROJ)

add_subdirectory(eigen-git-mirror)
add_subdirectory(CODES)

find_package (Eigen3 3.3 REQUIRED NO_MODULE)

add_executable("${PROJECT_NAME}" main.cpp)

target_link_libraries("${PROJECT_NAME}" PRIVATE Eigen3::Eigen CODES)

CMakeLists.txt (2)

file(GLOB CODES_A "A/*.hpp")
file(GLOB CODES_B "B/*.hpp")

source_group("A" FILES ${CODES_A})
source_group("B" FILES ${CODES_B})

add_library(CODES
    ${CODES_A}
    ${CODES_B}
)

target_include_directories(CODES
    PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/A"
    PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/B"
)

target_link_libraries(CODES PRIVATE Eigen3::Eigen)

现在当我编译 cmakelists 文件时,它会完成配置,但会产生错误CMake can not determine linker language for target: CODES。我认为问题在于 CMake 无法检测到语言CODES,但即使我添加set_target_properties(CODES PROPERTIES LINKER_LANGUAGE C17)它也会给出相同的结果。似乎是什么问题,我应该如何解决?

标签: c++cmakec++17

解决方案


推荐阅读