【发布时间】:2022-12-09 22:50:32
【问题描述】:
我有一个非常简单的 CMake 解决方案,其中包含一个共享库和一个可执行文件。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.24)
project(Test)
add_subdirectory(A)
add_subdirectory(B)
A/CMakeLists.txt:
cmake_minimum_required(VERSION 3.24)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(A)
file(GLOB_RECURSE Hdr CONFIGURE_DEPENDS inc/*)
file(GLOB_RECURSE Src CONFIGURE_DEPENDS src/*)
add_library(${PROJECT_NAME} SHARED ${Hdr} ${Src})
target_include_directories(${PROJECT_NAME} BEFORE PUBLIC inc PRIVATE src)
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY PUBLIC_HEADER ${Hdr})
A/CMakeLists.txt:
cmake_minimum_required(VERSION 3.24)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(B)
file(GLOB_RECURSE Src CONFIGURE_DEPENDS src/*)
add_executable(${PROJECT_NAME} ${Hdr} ${Src})
target_include_directories(${PROJECT_NAME} BEFORE PUBLIC inc PRIVATE src)
target_link_libraries(${PROJECT_NAME} PRIVATE A)
我使用所有这些来生成一个 VS2022 解决方案并打开它:
cmake.exe -S . -B tmp
start tmp\Test.sln
似乎考虑了 CMake 目标“A”,因为我在 VS 项目“B”的“附加包含目录”中看到了公共标头文件夹 (A/inc)。 当我在 VS 中导航到 B/References 时,我按预期看到了对项目“A”的引用:
但是当我双击它或尝试查看它的属性时,我得到: “Microsoft.VisualStudio.ProjectSystem.References.UnresolvedBuildDependencyProjectReference”
是否存在 CMake+VS 错误?或者我做错了什么?
注意:如果我从 Visual Studio(没有 CMake)手动创建整个解决方案,它工作正常!
【问题讨论】:
-
这很奇怪。我有一个包含多个库(虽然是静态的)的项目,并且在 MSVS2022 中一切都按预期工作。
标签: c++ cmake reference c++20 visual-studio-2022