을 하위 디렉터리에 링크 :SCons는이 같은 여러 서브 디렉토리 목표와 나는 SCons는 프로젝트가 라이브러리
project-root
- SConstruct
- Sconscript
+ supportlib
- SConscript (returning library target)
+ src
- ...
+ Program
- SConsctipt (importing library target)
+ src
- ...
참고 : supportlib 공유 라이브러리입니다. 나는이 같은 supportlib 대상에 링크 하위 디렉터리 프로그램에서
:
Import([supportlib]) # returned from supportlib/Sconscript
env.Append(LIBS=[supportlib])
이 작품의 supportlib 및 프로그램 컴파일 및 링크를 제공합니다. 그러나 supportlib가 프로그램에 링크되는 방법은 -lsupportlib 대신 공유 객체를 직접 참조하는 것입니다.
의사 링커 명령 예 :
SCons는이 같은 수행합니다
g++ -o Program/program src/sourcefile1.o src/sourcefile2.o -L ../supportlib -lsupportlib
이유 :
g++ -o Program/program src/sourcefile1.o src/sourcefile2.o ../supportlib/libsupportlib.so
내가이 원하는? 때문에 나는 다음과 같은 공유 라이브러리 의존성 얻을 연결하는 SCons는 방법과 :
$ ldd program/program
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f867ca03000)
supportlib/libsupportlib.so
내가 할 종속성을 원하는을 "경로가없는"이 같은 :
$ ldd program/program
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f867ca03000)
libsupportlib.so
내가 꽤 방법이 목표를 달성 할 수 빌드 의존성을 깨뜨리지 않고 SCons로? 내 환경에서 LINKFLAGS를 사용하여 수동으로 수행 할 수 있다는 것을 알고 있지만이 방법도 플랫폼 간 호환이 아니며 LIBS에 전체 대상을 전달하지 않을 경우 SCons가 빌드 종속성에 대한 지식을 잃어 버리게 될 것이라고 추측합니다. supportlib와 프로그램 사이.
안부 야콥 사이먼 - Gaarde