编译tpm20lib碰到的问题


这两天在windows7下面编译tpm20lib的时候,(tpm20lib地址在此:点击打开链接)

按照源码下面的Readme.docx文件的介绍,

配置TSSTOOLS_PATH环境变量,结果最后还是报错,

NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\vc\bin\nmake.exe"”: return “0x1” 

......

仔细看上面的输出,发现居然是: Microsoft Visual Studio 11.0\VC\BIN\vc\bin\nmake.exe

两层的vc\bin,妈蛋,什么鬼?

打开源码里面的makefile,加几行代码,ECHO出来里面的一些变量,发现也有类似的vc\bin\vc\bin或者vc\bin\vc\include的路径。


于是,修改环境变量,computer -> properties -> advanced systerm setting -> environment varibles -> TSSTOOLS_PATH,

改成:C:\Program Files (x86)\Microsoft Visual Studio 11.0

再试,还是不行,继续仔细研究vs2012里面的错误输出信息,有这么诡异的一行:

'C:\Program' is not recognized as an internal or external command...............


原来是文件夹名字里面的空格捣的鬼,于是,用subst这个命令来解决。

subst     k:     C:\Program Files (x86)\Microsoft Visual Studio 11.0

subst这个命令,可以将指定的路径映射成一个虚拟的盘符,这里,我就把vs2012的安装路径映射成k盘了

删除只需要 subst   k:   /d 就行了


然后再把TSSTOOLS_PATH设置为  k:

一切搞定,重新build,还是同样的错误,于是怀疑是不是环境变量设的不好,于是用那个源码里面的Readme.docx里说的set命令来搞,

set    TSSTOOLS_PATH="C:\Program Files (x86)\Microsoft Visual Studio 11.0"

额外说点儿,set设置的只是一个临时的值,只在当前所运行set的cmd窗口有效,

查看所有的环境变量就直接敲set就行了,

设定就是   set  myVal=“xxxxxx”

删除就是   set  myVal=

后面啥也别跟


结果set设定的也没鸟用,最后不折腾了,继续在computer -> properties -> advanced systerm setting -> environment varibles -> TSSTOOLS_PATH

里面来设置。

怀疑是因为vs2012太迟钝,没有及时刷新,于是退出vs2012再重新打开重新编译,成功。


综上,vs2012只是在初次启动的时候才会去扫面检查系统变量,一旦启动后,更改系统变量对它无效,必须重启IDE。


你可能感兴趣的:(TPM)