我正在尝试在Windows中为VisualStudio编译ffmpeg,其中一步是根据c99-to-c89帖子用clang编译this代码。我设法创建clang.exe,但我如何用它编译c99-to-c89代码?
我在c99-to-c89中更改了一些makefile,所以CC
变量现在指向clang.exe编译器而不是cl.exe
EXT=.exe
all: c99conv$(EXT) c99wrap$(EXT)
CLANGDIR=C:/build
CC=C:/build/bin/Release/clang.exe
CFLAGS=-nologo -Z7 -D_CRT_SECURE_NO_WARNINGS=1 -Dpopen=_popen -Dunlink=_unlink -Dstrdup=_strdup -Dsnprintf=_snprintf -I. -I$(CLANGDIR)/tools/clang/include
LDFLAGS=-nologo -Z7 $(CLANGDIR)/lib/Release/libclang.lib
clean:
rm -f c99conv$(EXT) c99wrap$(EXT) convert.o compilewrap.o
rm -f unit.c.c unit2.c.c
test1: c99conv$(EXT)
$(CC) -P unit.c -Fiunit.prev.c
./c99conv unit.prev.c unit.post.c
diff -u unit.{prev,post}.c
test2: c99conv$(EXT)
$(CC) -P unit2.c -Fiunit2.prev.c
./c99conv unit2.prev.c unit2.post.c
diff -u unit2.{prev,post}.c
test3: c99conv$(EXT)
$(CC) $(CFLAGS) -P -Ficonvert.prev.c convert.c
./c99conv convert.prev.c convert.post.c
diff -u convert.{prev,post}.c
c99conv$(EXT): convert.o
$(CC) -Fe$@ $< $(LDFLAGS) $(LIBS)
c99wrap$(EXT): compilewrap.o
$(CC) -Fe$@ $< $(LDFLAGS)
%.o: %.c
$(CC) $(CFLAGS) -Fo$@ -c $<
但是当我运行make
命令时,我得到clang: error: unsupported use of internal gcc -Z option '-Z7'
。我想CFLAGS
和LDFLAGS
中存在问题,但由于缺乏makefile和clang的知识,我不知道如何修复它。
答案 0 :(得分:3)
如果有人仍然需要,来自libav的人员为我提供this链接以下载二进制文件c99conv.exe
,c99wrap.exe
,makedef
答案 1 :(得分:1)
c99conv必须使用msvc compiller,但它使用来自LLVM的库。 Actualy,转换器使用clang作为解析器C99源。
因此clang需要使用MSVC(因为MSVC会将libclang与c99conv链接)。
因此,只需从您链接的文章中引导构建说明。
的
make -f Makefile.w32