cmake: Xcode не смог собрать библиотеку c ++ io2d - PullRequest
0 голосов
/ 09 апреля 2020

В одном из моих проектов мне нужно использовать следующую библиотеку c ++: https://github.com/cpp-io2d/P0267_RefImpl. Итак, во-первых, мне нужно собрать эту библиотеку на моем компьютере (система macOS)

На основе документа этой библиотеки: https://github.com/cpp-io2d/P0267_RefImpl/blob/master/BUILDING.md

, в котором она упоминается что: Xcode currently comes with an old version of libc++ which lacks many of C++17 features required by IO2D. The easiest solution is to download a fresh build of libc++ from here. Export appropriate CXX and LD flags to make clang use this version of the standard library (replace NEWPATH with a path of extracted archive contents):

export CXXFLAGS="-nostdinc++ -isystemNEWPATH/include/c++/v1"
export LDFLAGS="-LNEWPATH/lib -Wl,-rpath,NEWPATH/lib"

Для этого параметра я делаю это следующим образом:

Сначала загрузите новую библиотеку libc ++ и распакуйте ее. Путь к локальной папке libc ++ clang: /Users/chrisbao/Documents/develop/study/xcode-cpp-demo/cmake-test/CppND-Route-Planning-Project/thirdparty/clang

секунда, установите переменные среды следующим образом на основе приведенного выше документа:

export newpath = "/Users/chrisbao/Documents/develop/study/xcode-cpp-demo/cmake-test/CppND-Route-Planning-Project/thirdparty/clang"
export CXXFLAGS="-nostdinc++ -isystem$newpath/include/c++/v1"
export LDFLAGS="-L$newpath/lib -Wl,-rpath,$newpath/lib"

the echo вернуть значение этих двух переменных env:

echo $CXXFLAGS
-nostdinc++ -isystem/Users/chrisbao/Documents/develop/study/xcode-cpp-demo/cmake-test/CppND-Route-Planning-Project/thirdparty/clang/include/c++/v1

echo $LDFLAGS
-L/Users/chrisbao/Documents/develop/study/xcode-cpp-demo/cmake-test/CppND-Route-Planning-Project/thirdparty/clang/lib -Wl,-rpath,/Users/chrisbao/Documents/develop/study/xcode-cpp-demo/cmake-test/CppND-Route-Pla
nning-Project/thirdparty/clang/lib

В-третьих, запустить команду cmake, чтобы сконфигурировать сборку для библиотеки io2d:

git clone --recurse-submodules https://github.com/cpp-io2d/P0267_RefImpl
cd P0267_RefImpl
mkdir Debug
cd Debug
cmake -G "Xcode" --config Debug "-DCMAKE_BUILD_TYPE=Debug" -DIO2D_DEFAULT=COREGRAPHICS_MAC ../.
open io2d.xcodeproj

Далее откройте Xcode и запустите сборку, но не получилось со многими ошибками, такими как:

23. Candidate function template not viable: no known conversion from 'const svgpp::tag::skip_icc_color' to 'tag::value::none' for 3rd argument

29. Candidate function template not viable: no known conversion from 'svgpp::tag::attribute::fill' to 'tag::attribute::stroke' for 1st argument

Я новичок в мире c ++, и я проверяю экосистему библиотеки io2d и Google на inte rnet Я знаю, что кто-то может успешно построить ее в системе macOs. Так что должен быть какой-то шаг, я не сделал это правильно.

Мое первое подозрение - неправильная установка части переменной env, я ввожу ключевое слово -nostdinc++ в качестве ключевого слова, но не могу найти результат.
Другие идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...