头文件包含VS2022和CMake的WSL Ubuntu中的问题
问题
我使用的是Visual Studio 2022,当我尝试在WSL Ubuntu上包含"GLFW/glfw3.h"
时,我得到了一个源文件不存在的错误。然而,相同的代码在Windows上可以完美地工作。(这是所有其他库也有问题,但我只是以glfw为例)
当前代码
cmake_minimum_required (VERSION 3.8)
project ("test project")
include(FetchContent)
FetchContent_Declare(
glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 3.3.8
)
FetchContent_GetProperties(glfw)
if(NOT glfw_POPULATED)
FetchContent_Populate(glfw)
set(GLFW_BUILD_EXAMPLES OFF)
set(GLFW_BUILD_TESTS OFF)
set(GLFW_BUILD_DOCS OFF)
set(GLFW_INSTALL OFF)
add_subdirectory(${glfw_SOURCE_DIR} ${glfw_BINARY_DIR})
endif()
add_executable(test_exe "main.cpp")
target_link_libraries(test_exe PRIVATE glfw)
我找到了一个变通方法,将FETCHCONTENT_BASE_DIR
更改为项目的源目录,但这会带来更多问题。例如,在Windows和WSL Ubuntu之间切换需要删除从Windows获取的文件,否则会导致错误:
The current CMakeCache.txt directory /home/olli/.vs/Omerta/external/glfw/glfw-subbuild/CMakeCache.txt is different than the directory c:/Users/Olli/source/repos/GitOlli/Omerta/external/glfw/glfw-subbuild where CMakeCache.txt was created.
我也试过显式指定include目录,但也不起作用。
target_include_directories(test_exe PRIVATE "${CMAKE_BINARY_DIR}/_deps/glfw-src/include")
1条答案
按热度按时间ej83mcc01#
解决方法是删除“out”和“.vs”文件夹,将
CMakePresets.json
替换为CMakeSettings.json
,然后重新启动计算机。