我试图使用 CMake/g++ 8.1 在 Ubuntu 上编译 C++17 程序,其中包含
#include <filesystem>
Run Code Online (Sandbox Code Playgroud)
当我用这个的时候
set(CMAKE_CXX_FLAGS "-lstdc++fs")
Run Code Online (Sandbox Code Playgroud)
我遇到了一个奇怪的链接器错误
undefined reference to `std::filesystem::__cxx11::recursive_directory_iterator::~recursive_directory_iterator()'
Run Code Online (Sandbox Code Playgroud)
当我尝试使用该-lstdc++fs标志手动调用 g++ 时,也会出现此错误。
另一方面,这条线按我的预期工作
link_libraries(stdc++fs)
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么这两行提供不同的结果。该函数是否link_libraries()使用了一些我不知道的魔法?