【问题标题】:How come Visual Studio can't find my header even though it has been specified in CMake?即使在 CMake 中指定了我的标头,Visual Studio 怎么找不到我的标头?
【发布时间】:2021-05-15 11:47:55
【问题描述】:

所以这是我的项目的样子,供参考:

+ <root>
  + build
  + inc
    + libsm64
      + libsm64.hpp
  + src
    + libsm64.cpp
    + CMakeLists.txt
  + CMakeLists.txt

顶级CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(libsm64)

# add source.
add_subdirectory(src)

还有CMakeLists.txt 代表/src

add_library(libsm64 libsm64.cpp ../inc/libsm64/libsm64.hpp)
target_include_directories(libsm64 PRIVATE ../inc)

Visual Studio 2019 和 VSCode 都会在 libsm64.cpp 中给我一个错误,说它无法打开 libsm64/libsm64.hpp。为什么?

编辑:即使我将相对目录引用替换为绝对引用,即${libsm64_PROJECT_DIR}/inc/libsm64/libsm64.hpp,它也不起作用。

【问题讨论】:

  • 在 Visual Studio 中查看项目设置中的 Include 目录以查看添加的内容。
  • 它没有 .sln 文件,它是使用 Visual Studio 的 cmake 集成创建的。我应该使用 cmake 生成 .sln 吗?
  • 我总是让 CMake 生成 Visual Studio 项目文件。
  • 我认为错误与${libsm64_PROJECT_DIR}/inc/libsm64/libsm64.hppadd_library(libsm64 libsm64.cpp ../inc/libsm64/libsm64.hpp)无关
  • 等一下说它无法打开 libsm64/libsm64.hpp. 是编译错误?还是无法在 IDE 中打开文件?

标签: c++ cmake


【解决方案1】:

参见herehere

您想添加一个currentDir 条目,如下所示:

"currentDir": "${workspaceRoot}"

Visual Studio 显然没那么聪明。

【讨论】:

    猜你喜欢
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多