我想在windows操作系统中为不同的项目使用不同的tricore-gcc.exe
两个tricore-gcc.exe
位于以下路径中,但它们不在路径中:
C:\HighTec\toolchains\tricore\v4.6.3.0\bin\tricore-gcc.exe
C:\HighTec\toolchains\tricore\v4.9.2.0\bin\tricore-gcc.exe
我的问题是如何在waf中配置它
compiler_c
是否仅搜索msvc
、gcc
和clang
谢谢你的建议
(我在Stackoverflow中搜索过,例如Specify different compilers in waf,但没有找到关于如何在Windows中设置绝对路径的答案)
我的wscript
:
def options(opt):
print("start opt ------------------")
opt.load('compiler_c')
def configure(conf):
# here we are in default variant/env
# we load the default compiler, probably gcc
conf.load('compiler_c')
# config for tricore 4.6.3 variant
print("start ------------------")
conf.setenv('t463')
conf.env.CC = ['C:\HighTec\toolchains\tricore\v4.6.3.0\bin\tricore-gcc.exe']
conf.load('compiler_c')
# config for tricore 4.9.2 variant
print("start ------------------")
conf.setenv('t492')
conf.env.CC = ['C:\HighTec\toolchains\tricore\v4.9.2.0\bin\tricore-gcc.exe']
conf.load('compiler_c')
# back to default config
conf.setenv('')
def build(bld):
bld.program(source = 'main.c', target = 'myexe')
# this create variants commands and build directories
from waflib.Build import (
BuildContext,
CleanContext,
InstallContext,
UninstallContext,
)
for variant in ['t463', 't492']:
for context in [BuildContext, CleanContext, InstallContext, UninstallContext]:
name = context.__name__.replace('Context','').lower()
class tmp(context):
cmd = name + '_' + variant
variant = variant
我对它进行了测试,结果如下:
D:\CX\15_waf\test1>python waf configure
start opt ------------------
Setting top to : D:\CX\15_waf\test1
Setting out to : D:\CX\15_waf\test1\build
Checking for 'msvc' (C compiler) : not found
Checking for 'gcc' (C compiler) : not found
Checking for 'clang' (C compiler) : not found
could not configure a C compiler!
(complete log in D:\CX\15_waf\test1\build\config.log)
该config.log
:
# project configured on Tue Dec 29 14:42:29 2020 by
# waf 2.0.21 (abi 20, python 30803f0 on win32)
# using waf configure
#
----------------------------------------
Setting top to D:\CX\15_waf\test1
----------------------------------------
Setting out to D:\CX\15_waf\test1\build
----------------------------------------
Checking for 'msvc' (C compiler)
['C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe', '-products', '*', '-legacy', '-format', 'json']
from D:\CX\15_waf\test1: msvc: Impossible to find a valid architecture for building [] - []
not found
----------------------------------------
Checking for 'gcc' (C compiler)
find program=['gcc', 'cc'] paths=['C:\\Testwell\\CTC', 'C:\\Java\\j2sdk1.4.2_11\\bin', 'C:\\Windows\\system32', 'C:\\Windows', 'C:\\Windows\\System32\\Wbem', 'C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\', 'C:\\Program Files\\Intel\\WiFi\\bin\\', 'C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\', 'C:\\Program Files (x86)\\Common Files\\ETAS\\3rdParty1.0', 'C:\\Program Files (x86)\\Toolbase Client', 'C:\\Users\\xia.chen\\AppData\\Local\\Programs\\Microsoft VS Code\\bin', 'C:\\Users\\xia.chen\\AppData\\Local\\Programs\\Git\\cmd', 'C:\\HighTec\\toolchains\\tricore\\v4.9.2.0\\bin', 'D:\\tools\\Python38', 'D:\\tools\\Python38\\Scripts', 'C:\\HighTec\\toolchains\\tricore\\v4.9.2.0\\bin'] var='CC' -> None
from D:\CX\15_waf\test1: Could not find the program ['gcc', 'cc']
not found
----------------------------------------
Checking for 'clang' (C compiler)
find program=['clang'] paths=['C:\\Testwell\\CTC', 'C:\\Java\\j2sdk1.4.2_11\\bin', 'C:\\Windows\\system32', 'C:\\Windows', 'C:\\Windows\\System32\\Wbem', 'C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\', 'C:\\Program Files\\Intel\\WiFi\\bin\\', 'C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\', 'C:\\Program Files (x86)\\Common Files\\ETAS\\3rdParty1.0', 'C:\\Program Files (x86)\\Toolbase Client', 'C:\\Users\\xia.chen\\AppData\\Local\\Programs\\Microsoft VS Code\\bin', 'C:\\Users\\xia.chen\\AppData\\Local\\Programs\\Git\\cmd', 'C:\\HighTec\\toolchains\\tricore\\v4.9.2.0\\bin', 'D:\\tools\\Python38', 'D:\\tools\\Python38\\Scripts', 'C:\\HighTec\\toolchains\\tricore\\v4.9.2.0\\bin'] var='CC' -> None
from D:\CX\15_waf\test1: Could not find the program ['clang']
not found
from D:\CX\15_waf\test1: could not configure a C compiler!
是waf仅检测编译器c中定义的受支持的编译器
如果您的编译器是“兼容”的,因为clang与gcc是兼容的(即其命令行的工作方式相同),那么您只需定义
CC
:注意:我在Linux上测试过,没有可用的win32 box:)
要检测新的“不兼容”编译器,必须执行以下操作:
并定义一个
tricore
工具来检测编译器:对于类似
gcc
的编译器,您可以查看gcc.py
、clang.py
、suncc.py
或icc.py
。查看msvc.py
中与gcc
完全不同的编译器相关问题 更多 >
编程相关推荐