2012-04-15 3 views
1

나는 하나의 라이브러리로 컴파일해야하는 이전의 알 수없는 번호와 이름의 C++ 소스 파일을 생성하는 스크립트를 가지고 있습니다.automake에서 빌드 된 소스 수를 알 수 없음

compile: 
     for f in `ls -1 *.cpp` ; do g++ -c ... 
     ... 

디렉토리에 다른 C++ 소스가 없을 것입니다, 그래서 난 그냥 거기에 모든 것을 컴파일 : 지금까지, 내 ​​메이크에서 간단한 for 루프 (껍질)이 작업을 수행.

이제 빌드 시스템을 autoconf/automake로 변경하고 싶습니다.이 작업을 수행하는 '올바른'방법이 무엇인지 궁금합니다. 내가 찾은 자습서에서는 생성 될 소스의 수와 이름을 알고있는 경우 만 다룹니다.

예를 들어 컴파일러 이름과 autoconf/automake가 함께 사용하는 모든 플래그에 액세스 할 수있는 방법이 있습니까? 그렇다면이 컴파일러 명령을 내 자신의 컴파일 명령에 삽입 할 수 있습니까? 사전에

감사합니다.

답변

2

모든 파일을 명시 적으로 나열하여 Makefile.am을 생성하도록 스크립트를 변경했습니다.

+0

을하지만 이미 소스 스크립트를 실행하고 생성하는 책임이 Makefile.am 있습니다. 스크립트는 다른 입력 파일에 의존하므로 변경 될 때마다 다시 실행해야합니다. (나는 그것을 언급 했어야했다.) –

0

그래서 당신은 같은 것을 가지고

FOO_SCRIPT=script.sh 
libfoo_la_SOURCES=foo.cpp bar.cpp baz.cpp 

foo.cpp : foo.input 
     $(FOO_SCRIPT) $< 

bar.cpp baz.cpp : bar.input 
     $(FOO_SCRIPT) $< 
0
SRC= $(wildcard *.cpp) 
OBJ= $(SRC:.cpp=.o) 
[...] 
target: $(OBJ)