我正在(切换到)<std::experimental::filesystem>
在我的 C++14 代码中使用,我需要能够在 Linux 上使用 GCC 5.x(以及任何支持 C++14 的编译器,或者至少是相关版本)来构建它铿锵,msvc,也许还有icc)。
现在,当我链接时,我收到有关丢失所有文件系统相关符号的错误,例如:
foo.cpp:(.text+0x9cd): undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
现在,如果我“手动”添加对libstdc++fs
:
target_link_libraries(foo other_lib stdc++fs)
那么一切都很好 - 但我如何将其推广到任何支持 C++14 的编译器?
注意:我的相关部分CMakeLists.txt
如下所示:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
add_library(bar src/bar.cpp)
add_executable(foo src/foo.cpp)
target_link_libraries(foo bar other_lib)
*(当我使用boost::filesystem
它时,它反而更容易了——我只需要使用FindBoost.cmake
产生的任何东西。)
**-Wall
我猜,使用对于其他编译器来说也是一个问题。