내 요구에 가장 잘 맞는 조직 프로젝트를 수행하기 위해해야 할 일에 대해 몇 가지 질문이 있습니다.프로젝트 조직에 대한 조언
상황
것은 내가 QT5 작업을하고있어이 같은 프로젝트가 : 순간
MyProject/
MyProject.pro
src/
src.pro // target = app (include Controller.pro and View.pro)
Controller/
Controller.pro // no target, just add some sources
Component1/
Component2/
...
View/
View.pro // no target, just add some sources
Component10/
Component11/
...
main.cpp
test/
Controller/
Component1/
Component1.pro // target = app
main.cpp
...
View/
Component10/
Component10.pro // target = app
main.cpp
...
컴파일
이 모든 것을 제외하고 잘 작동의 내 프로젝트가 커지면 컴파일 시간도 더 커집니다. (약 2mins).
무슨 일이 있었는지 확인했는데 문제는 각 테스트 하위 프로젝트 파일에 모든 출처를 가지기 위해 Controller.pro가 포함되어 있다는 것입니다.
이렇게하면 소스를 N 번 컴파일하므로 길이가 너무 길어요.
는
build-MyProject/
src/
main.o
component1.o
component2.o
component10.o
...
test/
Controller/
Component1/
main.o
component1.o
...
View/
Component10/
main.o
component10.o
...
이 컴포넌트 1과 Component10 두 번 컴파일했다 (생성 된 파일/폴더에서, 내가 좋아하는 뭔가를). 내가 분명히
싶습니다 무엇
, 나는 한 번 각 파일에 대한 객체를 생성합니다. 이상적으로, 뭔가 같은 :
MyProject/
obj/
src/
Controller/
component1.o
component2.o
View/
component10.o
main.o
test/
Controller/
Component1/
main.o
View/
Component10/
main.o
내가 할 방법을 모르는 무엇
1 가장 큰 문제는 내가 산부인과/SRC를 링크 할 qmake를 얘기하는 방법을 모른다이다 /Controller/Component1.o with obj/test/Controller/main.o
2 - 귀하의 경험에 따르면,이 같은 조직, 좋은 점 또는 너무 복잡하거나 너무 많은 분리 된 점 ...?
3- qmake 도구를 사용하면 target = app 또는 target = lib를 정의하여 실행 파일이나 라이브러리를 생성 할 수 있음을 알았습니다. 링크를 수행하지 않고 객체를 생성하는 키워드가 있습니까? (핵심 단어 SOURCES에서 main.cpp을 제거 할 수 있지만 make는 모든 객체를 링크하려고 시도하고 main에 정의되지 않은 참조가 있습니다 ...)
미리 감사드립니다.
답장을 보내 주셔서 감사합니다! 저는 Controller와 View 용 라이브러리를 만드는 것이 해결책 일 수 있다고 생각했습니다. 필자가 생각하기에, 하나의 라이브러리 (컨트롤러)에 거의 모든 응용 프로그램이 있고 라이브러리에 mainRoutine을 호출하는 작은 실행 파일이 있기 때문에 조금 이상합니다. 나는 하위 디렉토리의 사용을 알고 있었지만 당신의 코멘트를 읽고, 나는 그것을 올바르게 사용하지 않았다는 것을 알아 냈습니다! – Martin
@ user3726543 라이브러리를 동적으로 링크 할 필요는 없습니다 (.dll/.so). 정적 라이브러리 (.lib/.a)가 될 수 있습니다. 그러면 각 실행 파일의 일부가됩니다. 실행 파일이 정적으로 링크되지 않은 경우 정적 라이브러리를 사용하는 데 공간이 낭비 될 수 있습니다. –