使用文件系统时仍然需要使用 C++20 链接到 stdc++fs 吗?
Linking to stdc++fs with C++20 still necessary when using filesystem?
我在 experimental::filesystem
刚出来的时候开始使用,我被建议在 stdc++fs
中 link 使用 CMake.
中的 target_link_libraries(MyTarget stdc++fs)
我的程序构建无论哪种方式,但如果我省略额外的 link 命令,我可能会破坏某些东西/做一些不必要的事情吗?
这个问题 是三年前提出的,似乎假设 linking in stdc++fs
是必要的。
编辑:编译器版本为 g++-9 (Homebrew GCC 9.3.0_1) 9.3.0
,CMake
版本为 3.16。
非常感谢!
从我的评论中删除:
我猜这取决于你的编译器版本。从 cppreference,在文件系统库页面的最底部,您可以找到:
Using this library may require additional compiler/linker options. GNU
implementation prior to 9.1 requires linking with -lstdc++fs and LLVM
implementation prior to LLVM 9.0 requires linking with -lc++fs
en.cppreference.com/w/cpp/filesystem#注释
如您所述,以下 link 详细介绍了如何在 cmake 中检查编译器身份:How can I add a minimum compiler version requisite?
我在 experimental::filesystem
刚出来的时候开始使用,我被建议在 stdc++fs
中 link 使用 CMake.
中的 target_link_libraries(MyTarget stdc++fs)
我的程序构建无论哪种方式,但如果我省略额外的 link 命令,我可能会破坏某些东西/做一些不必要的事情吗?
这个问题 stdc++fs
是必要的。
编辑:编译器版本为 g++-9 (Homebrew GCC 9.3.0_1) 9.3.0
,CMake
版本为 3.16。
非常感谢!
从我的评论中删除:
我猜这取决于你的编译器版本。从 cppreference,在文件系统库页面的最底部,您可以找到:
Using this library may require additional compiler/linker options. GNU implementation prior to 9.1 requires linking with -lstdc++fs and LLVM implementation prior to LLVM 9.0 requires linking with -lc++fs
en.cppreference.com/w/cpp/filesystem#注释
如您所述,以下 link 详细介绍了如何在 cmake 中检查编译器身份:How can I add a minimum compiler version requisite?