2012-08-01 2 views
4

Windows에서 배치 스크립트로 프로그램을 컴파일하는 데 사용했지만 최근에 훨씬 더 효율적인 makefile을 발견했습니다.런타임에 메이크 파일을 사용하여 파일 복사하기

나는 런타임에 일부 DLL을에게 현재 디렉토리를 를 복사 내 .bat 파일에서이 줄을했고 그것을 완벽하게 일했다.

copy C:\lib\glfw\glfw.dll 

나는 나의 메이크에서 같은 줄을 시도하고 심지어 파일이 내가 여기

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 

을 지정된 위치에 그래도이 오류도 대안 cp하지만 내 터미널 인쇄 시도 내가 사용하고있는 전체 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

어쩌면'copy'를 찾을 수 없습니까? 어떻게'rm'을 사용하고 있습니까? 찾을 수 있습니까? 'MSYS' 환경에서 이것을 실행하고 있습니까? –

답변

3

copy에 대해 알지 못하는 MSYS (또는 MinGW) 환경에서 실행중인 것 같습니다.

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

참고 /을 탈출하는 데 필요한 이중 // : 당신이 cp처럼 * nix에서 스크립트를 방지하려면 대신 다음과 같이 당신이 xcopy을 사용할 수,

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

를 사용할 수 있습니다.

또는 당신은이 경우 rm가 발견되지 않기 때문에 당신의 clean 대상이 작동하지 않습니다 그리고 당신은 del를 사용해야합니다, 일반 MS-DOS 환경에서이 작업을 실행할 수 있습니다.

현재 설정을 사용하면 내장 된 DOS 명령을 찾을 수 없습니다. make이 사용할 셸을 결정하는 방법에 대해서는 Choosing the shell을 참조하십시오.

+0

처음부터 dos environ에서 실행 중이었고 cp가 작동하지 않습니다. – iKlsR

+0

그러면'make clean'이 작동합니까? –

+0

예 완벽하게 작동합니다. – iKlsR

0

당신은 당신이 원하는 것을 이해하기 make 위해서는 백 슬래시를 두 번해야 할 수도 있습니다

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

만들기 파일 구분이 /하는 유닉스 배경에서 오는, 그래서 때로는 약간 어색한 Windows 환경에서 사용하는 방법.

+0

\\하지만 위와 같은 오류로 새 행을 인쇄합니다. – iKlsR

+0

아마도'/'를 사용해 볼 수도 있지만,'copy' 명령이 그것을 이해하는지 확신 할 수 없습니다. –

+0

방금 ​​시도했습니다. 같은 오류. – iKlsR

관련 문제