그래서 QuestaSim 및 systemverilog 파일과 함께 사용할 Makefile을 작성하려고합니다. 그것이 무엇인지 (그리고 대부분의 사람들은 그렇지 않다는 것을) 모른다면 걱정하지 마십시오. 그것은 제 문제와 관련이 없습니다. SRC/일/메이크컴파일 된 오브젝트 파일이 다른 이름의 다른 디렉토리에있는 경우 makefile을 작성하는 방법은 무엇입니까?
SRC에/디렉토리가 각 소스 파일이 포함 된 여러 디렉토리를 포함합니다
나는이 포함 된 프로젝트 디렉터 있습니다.
작업/디렉토리는 처음에는 존재하지 않으며 메이크 파일에 의해 생성됩니다.
"vlog"라고하는 "컴파일러"를 호출 할 때 .sv 파일에서 .sv 파일과 동일한 이름의 작업 폴더에 접미사가없는 디렉토리가 만들어집니다. 그 디렉토리에 내가 "객체"파일로 사용하는 파일 세 개가 _primary.dat입니다.
예를 들어 "vlog src/interface/my_interface.sv"를 호출하면 (성공하면) 작업이 생성됩니다
/my_interface/_primary.dat 내 .sv 파일은 특정 순서로 컴파일해야하고, 난 단지 소스 파일 또는 종속성 중 하나가 변경된 경우를 컴파일합니다.
내가 설정할 수 있습니다 "$ (addsuffix /_primary.dat, $ (addprefix $ (VLIB_DIR) /, $ (basename $ (notdir $ (SRC)))))))를 사용하여 관련 _primary.dat 파일의 경로로 .sv 파일 경로 "그러나 디렉토리 구조가 느슨해지면서 그 반대가 불가능합니다.
그래서 제가 생각하기에 객체 -> src의 일종의지도가 있다고 생각합니다. 그래서 내 $ (OBJ) 타겟 : "vlog $ (getsrc $ @)"할 수 있습니다.
그런 다음에 컴파일 순서와 의존성을 처리해야하지만, 아마도 그것을 해결할 수 있습니다.
제안 사항?
1) 소스 이름 충돌의 위험이 있습니까? 즉,'src/interface/foo.sv'가 있다면'src/engine/foo.sv'도있을 수 있습니까? 2)'src /'가 2 단계 이상 깊이있을 수 있습니까? 즉,'src/foo/bar/baz.sv'가있을 수 있습니까? – Beta
패키지/인터페이스/모듈의 이름이 파일과 동일해야합니다. 따라서 어떤 충돌이라도 컴파일 오류가 발생합니다. 현재 디렉토리는 두 단계로 구성되어 있지만 나중에 더 많은 단계를 추가 할 것을 고려할 수 있습니다. –
Questa와 함께 제공되는'vmake' 유틸리티를 보셨습니까? –