Скомпилируйте динамическую библиотеку iOS (.framework) с помощью cmake

Я скомпилировал динамическую библиотеку c ++ с использованием cmake и хочу добавить ее в свое приложение для iOS. Но каталог заголовочных файлов этой .framework пуст, я ссылаюсь на файлы CMakeFiles, написанные в документации по cmake. Я не знаю, где проблема?

Любая помощь будет принята с благодарностью.

Вот мой скрипт CMake

cmake_minimum_required(VERSION 3.2)

project(Xml C CXX)

set(CMAKE_SYSTEM_NAME Darwin)

set(CMAKE_SYSTEM_PROCESSOR arm)

set(HEADERS
./include
)

include_directories(
${HEADERS}
)

aux_source_directory(. DIR_SRCS)

add_library(Xml SHARED
${DIR_SRCS}
${HEADERS}
)

set_target_properties(Xml PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION CXX
PUBLIC_HEADER ${HEADERS}
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer")

Ход компиляции

Scanning dependencies of target Xml
[ 10%] Building CXX object CMakeFiles/Xml.dir/ILock.cpp.o
[ 20%] Building CXX object CMakeFiles/Xml.dir/ParamSet.cpp.o
[ 30%] Building CXX object CMakeFiles/Xml.dir/StringConvert.cpp.o
[ 40%] Building CXX object CMakeFiles/Xml.dir/XmlFile.cpp.o
[ 50%] Building CXX object CMakeFiles/Xml.dir/XmlInterface.cpp.o
[ 60%] Building CXX object CMakeFiles/Xml.dir/tinystr.cpp.o
[ 70%] Building CXX object CMakeFiles/Xml.dir/tinyxml.cpp.o
[ 80%] Building CXX object CMakeFiles/Xml.dir/tinyxmlerror.cpp.o
[ 90%] Building CXX object CMakeFiles/Xml.dir/tinyxmlparser.cpp.o
[100%] Linking CXX shared library Xml.framework/Xml
Copying OS X content Xml.framework/Versions/CXX/Headers/include
[100%] Built target Xml

Скомпилированная динамическая библиотека

0

Решение

Вопрос решен. CMake не может получить все файлы заголовков с ./include синтаксис. Ниже приведен модифицированный скрипт CMake.

set(HEADERS
./include/a.h
./include/b.h
./include/c.h
)

include_directories(
./include
)

aux_source_directory(. DIR_SRCS)

add_library(Xml SHARED
${DIR_SRCS}
${HEADERS}
)

set_target_properties(Xml PROPERTIES
FRAMEWORK TRUE
PUBLIC_HEADER "${HEADERS}")
0

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

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

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