用微软cl 手动编译/bat编译

0 . 起因

静态编译Qt 然后静态链接Qt时遇到很多问题,发现如果对编译过程更加熟悉一点的话,原本的困惑似乎会少很多,于是开始了解。

1 . 编译环境:

安装了Microsoft Visual C++ Compiler for Python 2.7(这个cl跟vs2008的版本相当),这里可以选择在安装目录本地练习操作,不过我为了之后上传github形成以后能用的编译包,将之组织到本地。

从如下安装目录借来bin include 和 lib 文件夹:
C:\Users\cn_pengs\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC

从如下安装目录借来 WinSDK文件夹:
C:\Users\cn_pengs\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0

组织文件到本地,目录结构为:
└───bin
└───include
└───lib
└───WinSDK
└───build_cl.bat
└───main.c

2 . 编辑main.c

#include <stdio.h>
 
int main(int argc,char* argv[])
{
    printf("This is a test program\r\n");
	
    return 0;
}

3 . 修改和测试build_cl.bat

3.1 . 测试1,直接编译

@echo off
rem build main.c
.\bin\cl.exe main.c
测试结果:
main.c(1): fatal error C1034: stdio.h: no include path set

3.2 . 测试2,加入-I ,包含include目录

@echo off
rem build main.c
.\bin\cl.exe main.c /I ./include
测试结果:
LINK : fatal error LNK1104: cannot open file ‘LIBCMT.lib’

3.3 . 测试3,加入/link ,包含include目录

@echo on
rem build main.c
.\bin\cl.exe main.c /I ./include /link ./lib/libcmt.lib ./lib/OLDNAMES.lib ./WinSDK\Lib\Kernel32.Lib
测试结果:
成功编译

运行结果:
C:\Users\cn_pengs\Desktop\build_cl>main
This is a test program

代码我放到了这里:
https://github.com/songpeng22/build_cl
参考文献:
https://blog.csdn.net/faithzzf/article/details/52328353

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值