2012-08-01 41 views
4

我曾經在Windows上用批處理腳本編譯我的程序,但是我最近發現了效率更高的makefile。在運行時使用makefile複製文件

我有這個線在我的.bat文件在運行時複製某些DLL 當前目錄下,並將其完美地工作。

copy C:\lib\glfw\glfw.dll 

我試過同一行中我的makefile,甚至試圖替代cp但我的終端打印這個錯誤甚至壽的文件在我指定的

process_begin: CreateProcess(NULL, copy C:\lib\glfw\glfw.dll, ...) failed 
make (e=2): The system cannot find the file specified. 
make: *** [core.exe] Error 2 

這裏是位置我正在使用的完整makefile。請注意,如果沒有複製品,它就像魅力一樣。我做錯了什麼或者這是可能的?

EXEC = core.exe 
OBJS = src/obp.o 

CC = g++ 

CFLAGS = -W -Wall 
LIBS = -lSOIL -lglew32 -lglfw -lopengl32 
LDFLAGS = 

$(EXEC): $(OBJS) 
    $(CC) $(LDFLAGS) -o [email protected] $(OBJS) $(LIBS) 
    copy C:\lib\glfw\glfw.dll 

clean: 
    rm -f $(EXEC) $(OBJS) *~ 
+0

這可能是無法找到的「副本」?你怎麼使用'rm',它能找到那個嗎?你在'MSYS'環境中運行這個嗎? – 2012-08-01 02:26:02

回答

3

它看起來像你從MSYS(或MinGW)環境,它不知道關於copy運行此。相反,你可以使用

cp C:\lib\glfw\glfw.dll . 

如果你想避免像cp * nix中,那麼你可以使用xcopy如下:

xcopy //Y C:\lib\glfw\glfw.dll 

注意這是需要躲避///

或者你可以在一個普通MS-DOS環境中運行這一點,在這種情況下,你的目標clean將無法​​工作,因爲rm不會被發現,你應該使用del

使用您當前的設置,將不會找到任何內置的DOS命令。請參閱Choosing the shell以瞭解有關make如何確定要使用的外殼。

+0

我從一開始就在dos環境中運行它,並且cp也不起作用。 – iKlsR 2012-08-01 03:41:50

+0

然後做「乾淨」工作嗎? – 2012-08-01 10:41:52

+0

是的,它完美的工作 – iKlsR 2012-08-01 15:43:42

0

您可能需要以反斜線一倍make明白你想要什麼:

copy c:\\lib\\glfw\\glfw.dll 

製作來自一個Unix背景所在的文件分隔符爲/,所以它有時有點彆扭在Windows環境中使用它。

+0

它用\\打印新行,但與上面相同的錯誤。 – iKlsR 2012-08-01 00:36:18

+0

也許你可以嘗試使用'/',但我不確定'copy'命令是否可以理解。剛剛嘗試過 – 2012-08-01 00:37:20

+0

。同樣的錯誤。 – iKlsR 2012-08-01 00:37:36