使用 CMake link C++17 文件系统的正确方法是什么?

What is the correct way to link C++17 filesystem with CMake?

我注意到 link 使用 gcc 8.3 运行我的 CMake 项目无法 link 从 std::filesystem 运行。 gcc 9、clang 7 或 clang 8 不是这种情况。

我找到了 and 之类的解决方案,但这些解决方案对 stdc++fs 的 link 进行了硬编码,这通常不是您想要的。

目前看来还没有合适的解决办法。在 CMake 跟踪器上仍有关于此主题的 open issue

有些人似乎在使用像 this one 这样的查找模块,这将允许您使用如下代码:

find_package(Filesystem REQUIRED)

add_executable(myapp myapp.cpp)
target_link_libraries(myapp PRIVATE std::filesystem)

在我看来,这比更改 CMAKE_CXX_FLAGS 或直接链接到 stdc++fs 更可取。