用cmake编译iOS动态库(.framework)

时间:2018-07-13 09:05:17

标签: c++ ios dynamic cmake frameworks

我已经使用cmake编译了一个c ++动态库,我想添加到我的iOS应用中。但是此.framework的头文件目录为空,我指的是cmake文档中编写的CMakeFiles。我不知道问题出在哪里?

任何帮助将不胜感激。

这是我的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

Compiled dynamic library

1 个答案:

答案 0 :(得分: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}"
)