Makefile在Linux中运行但不在Windows中运行 - 无法找到头文件

时间:2015-08-21 08:39:46

标签: linux windows makefile

合理直接的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'

0 个答案:

没有答案