c++ - 使用 cmake 编译 iOS 动态库(.framework)
问题描述
我已经使用 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
解决方案
问题解决了。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}"
)
推荐阅读
- git - 如何识别 git hook 脚本是否真的作为钩子运行
- php - Laravel 5.6 在我的刀片视图中显示 svg 图标不起作用
- php - 如何使删除按钮仅在表格的最后一行显示和执行操作?
- linux - bash linux - 从标准输入和标准输出写入和读取
- phpstorm - 在 PhpStorm 中按下 Enter 按钮后缩进
- python - 如何像 kahoot 那样将 IP 和端口加密成一个数字?
- docker - 如何使用外部 c++ 库加速 c++ 项目的 docker 映像构建?
- django - 在 File.read() 上使用编码 UTF-8
- shell - shell脚本中的指令顺序
- wordpress - 如何将外部 API 连接到 wordpress?