记macOS Mojave下使用PB的一些经验

介绍

介绍的话,不必多说了,网上很多内容

安装

  1. 安装必要工具,电脑上已经安装的brew,通过brew install来安装必要的工具,有autoconf,automake,libtool,protobuf,aclocal。期间可能会遇到报错,说brew无法连接,这时需要输入命令
sudo chown -R $(whoami) /usr/local
  1. 在项目主页下有文档说明,安装说明依次输入命令:
$ git clone https://github.com/protocolbuffers/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
$ ./autogen.sh
$ ./configure

进行./configure 可能会报错,不过别着急,先分析错误信息

configure: error:ERROR: protobuf headers are required.You must either install protobuf from google,or if you have it installed in a custom locationyou must add '-Iincludedir' to CXXFLAGSand '-Llibdir' to LDFLAGS.If you did not specify a prefix when installingprotobuf, try'./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib'In some 64-bit environments, try LDFLAGS=-L/usr/local/lib64.

仔细看,不难发现终端给出了解决办法,我想这应该是跟系统是不是64位有关吧(个人猜测)。
如果

$ ./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib

运行还是报错,换成下面这条语句

 ./configure CXXFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib64

成功后,输入

$ make
$ make install

没什么意外的话,环境应该建立起来了。

一键添加pb文件到Xcode项目里

每次都要pb文件有更新的话,都要手动更新的话会烦不胜烦的,幸好在网上搜索了一下,发现几篇文章有涉及到相关内容。

  1. 自动编译PB文件,并添加到项目
  2. 使用代码为 Xcode 工程添加文件
  3. ruby库xcodeproj使用心得

参考上面几篇文章,基本上实现了将pb文件一键添加到Xcode项目里,不过还有点缺憾,相关的.m 文件是非arc的,所以怎么实现在同一个ruby源文件里,实现add compiler flags呢?通过Google搜索,在github上找到了相关内容。
我摘录下来

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'xcodeproj'

# Add compiler flags to "Build Phases > Compile Sources"
def add_compiler_flags(xcproj, flags)
  xcproj.targets.each do |target|
    target.source_build_phase.files_references.each do |fileref|
      # You can check fileref with fileref.path or fileref.parent
      # fileref.parent is PBXGroup or PBXProject

      # In this sample, we check if any parent group has "WinObjC/Frameworks" path
      add_flags = false
      r = fileref
      loop {
          if r.kind_of?(Xcodeproj::Project::Object::PBXProject) || r.source_tree != ''
              break
              # 根据自己的项目修改path
          elsif r.path == 'WinObjC/Frameworks'
              add_flags = true
              break
          end
          r = r.parent
      }
      next unless add_flags
      fileref.build_files.each do |bf|
        # TODO: merge settings with original COMPILER_FLAGS
        bf.settings = {'COMPILER_FLAGS' => flags}
      end
    end
  end
end

def main
  //根据自己的内容修改调用的代码
  xcproj_path = ARGV.shift
  flags = ARGV.shift

  xcproj = Xcodeproj::Project.new(xcproj_path)
  xcproj.initialize_from_file

  add_compiler_flags(xcproj, flags)

  xcproj.save
end

main

至此折腾的差不多了。相关的文件,上面参考的文章都有相应的内容,如果需要更改的话,根据自己实际项目去修改即可。因为相关资料零零散散的,特此整理一下。

你可能感兴趣的:(记macOS Mojave下使用PB的一些经验)