小编Vin*_* La的帖子

为什么 link_libraries(stdc++fs) 有效但 -lstdc++fs 无效?

我试图使用 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()使用了一些我不知道的魔法?

c++ g++ cmake c++17

2
推荐指数
1
解决办法
3151
查看次数

标签 统计

c++ ×1

c++17 ×1

cmake ×1

g++ ×1