我有一个生成文件,其被设计为与NMAKE工作(在MS视觉工作室命令行提示)。该makefile
本身将需要像一个批处理文件MY_SAY_SOMETHING
其他工具的环境变量test.bat
。这工作很细带nmake
。
不过,我想使用Qt的jom
,而不是通过使用选项-J
几个处理器内核的使用情况,以加快我的构建过程。该工具jom
is认为是根据它的Qt的nmake
克隆,所以makefile
应该是兼容的。
问题是:jom
不会在Windows机器上设置环境变量!在方式至少不是NMAKE支持它。
所以我的问题是:我如何设置环境变量,jom
?
这是显示我的问题尽可能短的例子:
生成文件:
!IF [set MY_SAY_SOMETHING="my super message"]
!ENDIF
all:
@test.bat
test.bat的:
@echo off
echo THIS IS MY SUPER MESSAGE "%MY_SAY_SOMETHING%"
现在,我打电话与NMAKE生成文件(从Visual Studio命令行提示符)。这看起来是这样的:
d:\> NMAKE
微软(R)程序维护实用程序版本10.00.30319.01版权所有(C)微软公司。版权所有。
THIS IS MY SUPER MESSAGE “” 我的超级信息 “”
当我打电话JOM(无论是从视觉工作室命令行提示符或常规Windows CMD.EXE的提示),我只是得到这样的:
d:\>让我们
JOM 1.1.3 - 使您的内核
THIS IS MY SUPER MESSAGE “”
我也呼吁-P
和nmake
的jom
选项来获得有关生成文件是如何解释的更多信息。然而,我的环境变量印有nmake
,但不与jom
。我也试过选项-E
(覆盖环境变量宏)具有相同的结果。
也许这是在jom
的错误...
生成文件:
all: .MY_ENVIRONMENT
@test.bat
.MY_ENVIRONMENT:
@set MY_SAY_SOMETHING="my super message"
既要对付nmake
和jom
工作:
>nmake -l
THIS IS MY SUPER MESSAGE ""my super message""
>jom -l
THIS IS MY SUPER MESSAGE ""my super message""
编辑:这是我的第一个答案,探索三个想法不工作。看到我的第二个答案的一个实际的解决方案。
这是一个多回答评论的,但它确实提出一个变通。
下面的Makefile的输出:
!IF [echo Test 1:] && [set MY_SAY_SOMETHING="my super message"] && [set MY]
!ENDIF
!IF [echo Test 2: && set MY_SAY_SOMETHING="my unsuper message" && set MY]
!ENDIF
WORK_AROUND = set MY_SAY_SOMETHING="this is a possible work-around"
all:
@echo Test 3:
@-call set MY
@test.bat
@echo Test 4:
@$(WORK_AROUND)
@call set MY
@test.bat
是nmake
:
>nmake
Microsoft (R) Program Maintenance Utility Version 14.10.25019.0
Copyright (C) Microsoft Corporation. All rights reserved.
Test 1:
MY_SAY_SOMETHING="my super message"
Test 2:
MY_SAY_SOMETHING="my unsuper message"
Test 3:
MY_SAY_SOMETHING="my super message"
THIS IS MY SUPER MESSAGE ""my super message""
Test 4:
MY_SAY_SOMETHING="this is a possible work-around"
THIS IS MY SUPER MESSAGE ""this is a possible work-around""
和jom
:
>jom
Test 1:
Environment variable MY not defined
Test 2:
MY_SAY_SOMETHING="my unsuper message"
jom 1.1.3 - empower your cores
Test 3:
Environment variable MY not defined
THIS IS MY SUPER MESSAGE ""
Test 4:
MY_SAY_SOMETHING="this is a possible work-around"
THIS IS MY SUPER MESSAGE ""this is a possible work-around""
注1:nmake
,测试2的输出是我所期望的,但它并没有“拿”。在试验3 set MY
带给你的是在测试1套。
注2:jom
,测试2给出了所需的输出,但同样没有“拿”。而测试1失败。
注3:在配方,需要对call
为jom
上班set MY
。这是可选的nmake
。