Skip to content

基于xcode进行libuv编程之环境搭建 #36

@xtx1130

Description

@xtx1130

这篇文章主要介绍使用xcode搭建libuv开发环境,当然读者亦可以使用homebrew进行全局安装libuv。此文内容比较基础,主要是给前端开发者抛砖引玉,方便前端开发人员更加深入研究libuv。

libuv本地编译

macOS下面对libuv的编译在官方文档中写的也比较明白了,直接执行如下命令:

$ git clone https://github.com/libuv/libuv.git
$ cd libuv
$ git clone https://chromium.googlesource.com/external/gyp build/gyp
$ ./gyp_uv.py -f xcode
$ xcodebuild -ARCHS="x86_64" -project out/uv.xcodeproj -configuration Release -alltargets

首先 clone下来libuv的主干代码,之后进入到libuv目录中,clone下来gyp到build/gyp目录下。之所以需要gyp是因为接下来我们需要gyp进行xcode工程构建。第四步则是构建xcode工程文件uv.xcodeproj 。最后我们执行xcodebuild来进行libuv编译,最终会在/build/Release/目录下产出静态库libuv.a

xcode工程搭建

打开xcode,选择new->project,在出来的弹窗中我们选择Command Line Tool

点选下一步之后,我们在language一栏中选择C。

之后项目就会自动搭建起来了,接下来我们要做的就是引入libuv的头文件和静态库。
首先我们在finder中打开libuv文件夹,在目录中会有一个include/文件夹,
issue36-3
直接把整个文件夹拖拽到新建的xcode工程中:

会出现如下弹窗,如下这几个选项一定要勾选上:

头文件已经被我们成功引入进来了,接下来我们需要引入一下静态链接库libuv.a,再引入之前,我们先在xcode工程下新建一个目录专门用于存放链接库:
issue36-6
之后我们在xcode工程中加入这个目录:

选择add Files to 之后,在弹出的文件选择弹窗中选择我们刚刚建好的Frameworks目录,这样我们就把这个文件夹加入到我们的xcode工程中了。
然后我们按照刚才引入头文件的方法,把/libuv/build/Release/libuv.a拖拽到Frameworks目录下,弹窗的选项和刚才引入头文件的选项一致:

之后我们需要改一下头文件的搜索目录,在User Header Search Paths中双击添加,加入刚才我们引入的头文件的目录$(SRCROOT)/include/

try it!

接下来我们改造一下main.c,还是用libuv官方入门的例子:

#include <stdio.h>
#include <stdlib.h>
#include "uv.h"

int main() {
    uv_loop_t *loop = malloc(sizeof(uv_loop_t));
    uv_loop_init(loop);
    
    printf("Now quitting.\n");
    uv_run(loop, UV_RUN_DEFAULT);
    
    uv_loop_close(loop);
    free(loop);
    return 0;
}

写好之后,直接点击一下运行,看看是不是会出现build success的弹窗了~
在这里需要注意一下#include "uv.h"双引号""和尖括号<>的区别:双引号会在 build setting中定义的User Header Search Paths目录中寻找头文件,而尖括号则会在/usr/include/系统目录中寻找头文件。在本文中,我们把头文件单独导入到了项目中,所以需要用双引号来引入uv.h

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions