使用 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 进行了硬编码,这通常不是您想要的。
- 那么 link 这样的库的正确方法是什么?
- 我必须做一个
find_package
吗?我要找的包裹是什么?
目前看来还没有合适的解决办法。在 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
更可取。
我注意到 link 使用 gcc 8.3 运行我的 CMake 项目无法 link 从 std::filesystem 运行。 gcc 9、clang 7 或 clang 8 不是这种情况。
我找到了 stdc++fs
的 link 进行了硬编码,这通常不是您想要的。
- 那么 link 这样的库的正确方法是什么?
- 我必须做一个
find_package
吗?我要找的包裹是什么?
目前看来还没有合适的解决办法。在 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
更可取。