cmake не помещает статическую библиотеку (c ++ fs) в конец команды компоновщика

У меня есть проблема, что ссылка на stdc++fs (std :: exeperimental :: filesystem) не будет работать.

По сути, у меня есть следующие вызовы для моей цели:

target_link_libraries(${TARGETNAME} PRIVATE "c++fs" "c++experimental")
target_link_libraries(${TARGETNAME} PRIVATE MyCoreDeps)

что приводит к

/usr/local/opt/llvm-7.0/bin/clang++  -g  -L/usr/local/opt/llvm-7.0/lib
-Wl,-rpath,/usr/local/opt/llvm-7.0/lib
-fsanitize=address
CMakeFiles/ExecutionGraphTest-ExecutionTree.dir/src/main_ExecutionTree.cpp.o
CMakeFiles/ExecutionGraphTest-ExecutionTree.dir/src/TestFunctions.cpp.o
-o ExecutionGraphTest-ExecutionTree
-Wl,-rpath,...some..paths...
../lib/libExecutionGraph-CoreForTests-dbg.so.1.0.3
../lib/libgtestd.a
../lib/libgmock_maind.a
-lc++fs -lc++experimental
../../buildExternal/install/fmt/lib/libfmt.a
../../buildExternal/install/rttr/lib/librttr_core.so.0.9.7
../../buildExternal/install/flatbuffers/lib/libflatbuffers.a
../../buildExternal/install/crossguid/lib/libcrossguid.a /usr/lib/x86_64-linux-gnu/libuuid.so
../lib/libgmockd.a
../lib/libgtestd.a
-pthread

Который терпит неудачу, потому что -lc++fs находится в середине команды link, а не в конце, потому что это статическая библиотека? как я могу обойти это и почему cmake не способен сделать это правильно, что означает предоставление компоновщику правильных зависимостей, что я здесь делаю неправильно?

Выход:

/usr/bin/ld: ../lib/libExecutionGraph-CoreForTests-dbg.so.1.0.3: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
/usr/bin/ld: ../lib/libExecutionGraph-CoreForTests-dbg.so.1.0.3: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::compare(std::experimental::filesystem::v1::__cxx11::path const&) const'

-1

Решение

К сожалению, не было сообщения об ошибке, что -lc++fs не был использован. Правильное наименование важно: stdc++fs

target_link_libraries(${TARGETNAME} PRIVATE "stdc++fs" "c++experimental")
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]