前提:Linux系统、git、clang-8、g++-mingw-w64-x86-64、gobjc++-mingw-w64-x86-64。

一、下载源代码

git clone https://github.com/gnustep/libobjc2.git

二、配置环境变量

export CC=clang    #可能需要创建软链接 ln -s /usr/bin/clang- /usr/bin/clang,也可以替换为export CC=clang-。
export CXX=clang++ #可能需要创建软链接 ln -s /usr/bin/clang++- /usr/bin/clang++,也可以替换为export CXX=clang++-。
export RUNTIME_VERSION=gnustep-2.0 #指定使用gnustep-2.0 ABI
export LDFLAGS="-Wl,--export-all-symbols,--output-def,libobjc.def" #导出libobjc.def
export OBJCFLAGS="-fblocks"
export CFLAGS="--target=x86_64-w64-mingw32"
export CXXFLAGS="--target=x86_64-w64-mingw32"

三、编译libobjc2

cd libobjc2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=${CC} -DCMAKE_CXX_COMPILER=${CXX} -DCMAKE_MODULE_LINKER_FLAGS=${LDFLAGS} -DTESTS= #设置TESTS=,因为TESTS与--export-all-symbols不兼容。
#删除CMakeFiles/objc.dir/flags.make中所有的-fPIC,因为-fPIC与Windows不兼容。
make -j8
make install

四、测试(在Widnows进行)

lib /machine:amd64 /def:libobjc.def
//test.mm
#include <iostream> using namespace std; __attribute__((objc_root_class)) @interface Test
+ (void) test;
@end @implementation Test
+ (void) test {
cout << "Hello World!\n";
}
@end int main() {
[Test test];
return ;
}
clang-cl test.mm -o test.exe /link libobjc.lib /libpath:<path-to-libobjc>

最新文章

  1. Mysql日志解析
  2. 如何使用 Docker 部署一个基于 Play Framework 的 Scala Web 应用?
  3. SpringMvc入门三----控制器
  4. CodePage代码,MultiByteToWideChar
  5. 深入浅出畅谈Zigbee
  6. php基础_2
  7. Django ORM详解
  8. 使用async await 封装 axios
  9. JavaScript(二)数据类型(一)
  10. __x__(38)0909第五天__雪碧图的制作
  11. Balanced Number HDU - 3709 数位dp
  12. hdu-2509-反nim博弈
  13. 无需公众号PHP微信登录微信授权微信第三方登录微信开发php开发
  14. lucene源码分析(1)基本要素
  15. xcode官网下载地址
  16. gulp教程之gulp-autoprefixer
  17. php单例模式和工厂模式
  18. ARM开发板不工作的几个原因
  19. debug的时候出现停在ThreadPoolexecutor.class文件中停留的解决办法
  20. macOS如何正确驱动集成显卡HDMI(包括视频和音频)

热门文章

  1. spring boot @Value源码解析
  2. O016、搭建实验环境
  3. 多线程编程-- part5.1 互斥锁ReentrantLock
  4. jquery 知识整理
  5. 两种Tensorflow模型保存的方法
  6. log4net 报错
  7. DNS信息探测
  8. 【未知来源】Happy
  9. ELK是什么?
  10. node.js启动服务,不依赖第三方