Если вы строите код C ++ 14 с помощью G ++ и libstdc ++, есть библиотека с именем 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 c?