blog
blog copied to clipboard
基于xcode进行libuv编程之环境搭建
这篇文章主要介绍使用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/
文件夹,
直接把整个文件夹拖拽到新建的xcode工程中:
会出现如下弹窗,如下这几个选项一定要勾选上:
头文件已经被我们成功引入进来了,接下来我们需要引入一下静态链接库
libuv.a
,再引入之前,我们先在xcode工程下新建一个目录专门用于存放链接库:
之后我们在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
。
工作还是业余mac C编程呢 业余的话我宁愿vs code吧
@boyxiaolong 业余的。libuv我接触的不多,我写javascript c++ addon一般用sublime。vscode……说句实话,没怎么用过。我调试node项目也是用 node --inspect--bak
chrome devtool调试。
libuv 有cmake支持,可以直接在clion打开。
@gengjiawen 恩恩,看到了,非常感谢~文章写的有什么问题还望前辈多多指教!