实验楼课程
Xmake 带你轻松构建 C/C++ 项目 是我们在实验楼上推出的一门 xmake 入门和进阶课程(收费),以边学边做实验的方式快速学习 xmake 的使用。
通过此处优惠码购买可享 9 折优惠:NYFbmf3X
xmake 介绍
Xmake 是一个基于 Lua 的轻量级跨平台 C/C++ 构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt 而言,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门 C/C++ 项目的编译开发,提供一站式跨平台编译、运行、调试、打包、安装等操作,能够让大家把更多的精力集中在实际的项目开发上。
虽然,简单易用是 xmake
继续阅读 »
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
在这个新版本中,我们重点改进了 xmake 的依赖包管理,新增了 Archlinux 和 MSYS2/Mingw 下 的 pacman 包管理器支持,另外我们进一步丰富了 xmake 的官方包仓库 xmake-repo,新增了 50 多个常用的 C/C++ 包。
此外,我们新增了一个基于 xmake 的独立子命令:xrepo,一个完整独立的跨平台 C/C++ 包管理器,便于用
继续阅读 »
xrepo is a cross-platform C/C++ package manager based on Xmake.
Github
Official Document
It is based on the runtime provided by xmake, but it is a complete and independent package management program. Compared with package managers such as vcpkg/homebrew, xrepo can provide C/C++ packages for more platforms and architec
继续阅读 »
xrepo 是一个基于 Xmake 的跨平台 C/C++ 包管理器。
项目源码
官方文档
它基于 xmake 提供的运行时,但却是一个完整独立的包管理程序,相比 vcpkg/homebrew 此类包管理器,xrepo 能够同时提供更多平台和架构的 C/C++ 包。
并且还支持多版本语义选择,另外它还是一个去中心化的分布式仓库,不仅仅提供了官方的 xmake-repo 仓库,还支持用户自建多个私有仓库。
同时,xrepo 也支持从 vcpkg/homebrew/conan 等第三方包管理器中安装包,并提供统一一致的库链接信息,方便与第三方项目的集成对接。
如果你想要了解更多,请参考:在线文档, Github 以及 Gitee
继续阅读 »
编译的详细过程
以hello.c的源文件为例, C/C++编译, 链接与装载的流程是
gcc -E 将hello.c预处理, 把所有的宏展开, 解析#ifndef, 删除注释等, 得到translation unit(编译单元) hello.i文件.
gcc -S 将hello.i编译成汇编文件hello.s
gcc -c 汇编器as将hello.s编译成成目标文件hello.o
gcc 链接器ld将hello.o链接成可执行文件a.out
继续阅读 »
xmake is a lightweight cross-platform build tool based on Lua. It uses xmake.lua to maintain project builds. Compared with makefile/CMakeLists.txt, the configuration syntax is more Concise and intuitive, very friendly to novices, can get started quickly in a short time, allowing users to focus more on the actual projec
继续阅读 »
当我们编译多个文件时, 就会有多个目标文件.
这些模块最后如何形成一个单一的程序呢?
模块间通信
链接器的由来
C/C++模块之间通信的方式有两种, 一种是模块间函数调用, 另一种是模块之间的变量访问.
在编译成目标文件的时候, 由于没有办法得知所引用的外部函数或者外部变量的地址, 所以会先置0.
所以问题本质上就是, 如何得知目标函数或者目标变量的地址呢?
继续阅读 »
最近的项目中使用c作为开发语言,由于我之前学习c仅限于看完了几本相关书籍,除了上学期间和找工作时写的一些c程序以及工作中一些关于c的bug fix,在项目中使用c还是第一次,通过这段时间对c的使用,更能体会到下面这句话的含义:
如果没有真正骑过自行车,就算看十本教你学骑自行车的书,最后还是不会骑自行车
继续阅读 »
今天看《程序员面试宝典》时偶然看到讲数组和指针的存取效率,闲着无聊,就自己写了段小代码,简单分析一下C语言背后的汇编,可能很多人只注重C语言,但在实际应用当中,当出现问题时,有时候还是通过分析汇编代码能够解决问题。本文只是为初学者,大牛可以飘过~
C源代码如下:
#include "stdafx.h"
int main(int argc, char* argv[])
{
char a=1;
char c[] = "1234567890";
char *p = "1234567890";
a = c[1];
a = p[1];
return 0;
继续阅读 »
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
我们可以用 xmake 很方便的开发构建 C/C++ 项目,同时也支持和其他 native 语言的混合编译。
近期,我们还新增了一个基于 xmake 的独立子命令:xrepo,一个完整独立的跨平台 C/C++ 包管理器,便于用户更加方便的管理日常 C/C++ 包的安装和集成使用。
关于 xmake 和 xrepo 的进一步了解和使用可以参考下面的链接。
项目源码
继续阅读 »