2016-11-01 3 views
0

makefile 프로젝트를 scons로 이식하는 중이고 각 파일에 대해 고유 한 #define을 만드는 방법을 알 수 없습니다. 일부 사용자 정의 디버그 매크로를 지원하기 위해 정의 된 각 파일의 기본 파일 이름을 갖고 싶습니다. 메이크 파일에서 다음 정의를 사용하여이 작업을 수행 할 수 있습니다.scons 프로젝트에 파일 별 정의를 추가하는 방법

-DBASE_FILE_NAME=\"$(<F)\" 

나는 이것을 수행하는 방법이나 scons에서 가능할 지 모르겠으며 어떤 피드백이든지 고맙겠습니다.

답변

0

몇 가지 실험을 한 후 다음과 같이 작동합니다.

이렇게하면 개별적으로 파일을 나열하지 않고 파일 단위로 항목을 정의 할 수 있습니다.

+0

SCons Glob을 사용하지 않는 이유는 무엇입니까? – bdbaddog

+0

변경 : O_FILES = [] 다음에 O_FILE.extend (env.Object (.... – bdbaddog

+0

) glob는 O_FILES리스트를 만들 때 조작 할 수있는 파일 이름 목록을 제공하기 때문에 Scons Glob은 Pyhton 객체 –

0

아마도 다음과 같습니까? (시도하지는 않았지만 그 행에있는 것이 작동해야 함)

env.Program('filename.c',CPPDEFINES='-DBASE_FILE_NAME=\"$SOURCE\"') 
+0

감사합니다. 나는 그것을 시도 할 것이다. –

+0

현재 "Glob ('*. cpp')"를 사용하여 scons가 소스 폴더의 모든 .cpp 파일을 개별적으로 나열하지 않고 작성하도록하기 때문에이 방법이 작동하지 않는 것 같습니다. CPPDEFINES를 환경에 추가하는 것은이 상황에서 작동하지 않습니다. 파이썬을 사용하여 모든 .cpp 파일의 목록을 만든 다음 각각에 대해 env.Object를 호출하는 해당 목록을 반복 할 수 있다고 가정합니다. 나는 scons가이 상황을 처리하기위한 몇 가지 기본 메커니즘을 가지고 있기를 바랄뿐입니다. –

+0

지금 어떻게 컴파일하고 있습니까? SharedLibrary() 또는 Program()에 피드를 제공 하시겠습니까? 또는 다른? – bdbaddog

관련 문제