合理直接的makefile。我正在尝试构建.so和.dll来链接到另一个程序,Linux版本已经完全顺利。但是,在Windows中编译时收到一个奇怪的错误
make: *** No rule to make target '/L/folder/folder/include/header.h',
needed by 'obj/file.o'. Stop.
这意味着它无法找到" header.h"出于某种原因,因为它试图建立它。
我有一些代码来确定平台(丑陋,我知道)
ifeq ($(PLT), lnx32)
INC_DIR = /mnt/L/folder/folder/include/
TARGET = lnx32/libmine.so
endif
ifeq ($(PLT), win32)
INC_DIR = /L/folder/folder/include/
TARGET = win32/libmine.dll
endif
一些甚至更丑陋的makefile代码来编译file.o
$(OBJ_DIR)/file.o: $(INC_DIR)/header.h $(INC_DIR)/another_header.h $(SRC_DIR)/file.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(SYS5FLAG) -c $(SRC_DIR)/file.c -o $@ -I$(INC_DIR)
不确定它是否相关,但L是网络驱动器,我在Windows中使用Debian通过VNC和msys。有什么想法会发生什么事吗?提前致谢。
更新:
我改变了
INC_DIR = / L / folder / folder / include /
到
INC_DIR = L:\ produkter \ RD \ shared \ include
看看会发生什么,它给了大量的
Cannot export y_varde: symbol not found
./obj/file.o: In function `some_function':
/mnt/L/folder/folder/./src/file.c:191: undefined reference to `vsprintf'
错误。奇怪的是它看着/ mnt /虽然它确实不应该(在Windows中)。
**更新2 **
好的,问题是由于Linux版本中的旧对象文件造成的。它没有为Windows重建它们,而是认为它们是正确的"那些并试图链接他们显然不会工作。尽管如此仍有错误,但似乎更容易管理,与路径有关......
l:\foloder\folder/./src/somefile.c:1821: undefined reference to `debug'