如果您使用 G++ 和 libstdc++ 构建 C++14 代码,则有一个名为 的库libstdc++fs
,它libstdc++
与std::experimental::filesystem
. 如果您不链接它,您将获得未定义的引用。
我现在用来克服这个问题的“技巧”是:
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CXX_FILESYSTEM_LIBRARIES "stdc++fs")
endif()
然后:
target_link_libraries(my_target PUBLIC ${CXX_FILESYSTEM_LIBRARIES})
但是 - 我不喜欢在我从事的每个项目中都放置这段代码。我可以使用更简单或更标准的成语吗?以某种方式,这一切可能都会隐含地发生,有一些 CMake 的幕后魔法?