2014-11-26 4 views
1

나는 몇 시간 동안이 문제를 조사해 왔지만 해결책을 찾지 못해서 묻는다.C-Make로 프로젝트에 '비공식'파일을 추가하는 방법

약 10 개의 프로젝트가 포함 된 프로젝트 솔루션이 있습니다. 하지만 나는 의존성 문제에 직면 해있다. 내 프로젝트 중 하나는 moc 파일 (Cmake의 'QT4_WRAP_CPP'매크로에 의해 생성 된 QT moc 파일)을 생성하며 다른 프로젝트에서이 moc 파일을 사용하고 싶습니다. 지금은 cmake 스크립트를 실행하고 솔루션을 얻은 후에 모든 프로젝트를 빌드하고 이전 프로젝트에서 생성 된 moc 파일을 필요로하는 프로젝트는 오류 연결에 대해 불평합니다. (올바르게 내가 c-make에서 파일을 가리 키지 않았기 때문에 그렇습니다. ADD_EXECUTABLE 섹션의 스크립트).

제 질문은 : 아직 빌드되지 않은 것이지만 Cmake의 프로젝트에 cmake 스크립트를 작성하는 것을 가리키는 파일을 추가하는 방법이 있습니까?

// (이 솔루션도하고 Y 프로젝트 이전에 지어진) X 프로젝트 이름이 'moc_X.cxx와 MOC 파일을 생성한다고 가정 : 여기

프로젝트의 cmake 스크립트의 섹션을 관련 '

SET(Y_WORK_STATION_UI_HEADER YWorkStation.h 
     YSignInWidget.h 
     YConfigurationWidget.h) 

    QT4_WRAP_CPP(MOCSrcs ${Y_WORK_STATION_UI_HEADER}) 

ADD_EXECUTABLE(${PROJECT_NAME} 
     main.cpp 
     . 
     . 
     . 
     ${MOCSrcs} 
     %---------------->and here something like moc_X.cxx ? 
    } 

희망 사항은 충분합니다. 미리 감사드립니다.

답변

1

CMake가 이해하는 것 (즉, 같은 CMakeList의 커스텀 커맨드)에 의해 파일이 생성된다면, CMake는 그 자체로 의존성을 선택할 수 있습니다.

add_executable(${PROJECT_NAME} 
     main.cpp 
     . 
     . 
     . 
     ${MOCSrcs} 
     moc_X.cxx ? 
    ) 

set_property(SOURCE moc_X.cxx PROPERTY GENERATED TRUE) 
+0

예, 감사합니다.이 속성은 내가 찾고있는 곳이었습니다. 그것은 효과가 있었다. 내 시간을 절약 해 주셔서 다시 한번 감사드립니다.) – Horizon1710

+0

하지 마십시오. 구현 세부 사항을 가지고 놀고 있습니다. – steveire

+0

@steveire 정성스럽게 케어? 무엇에 대한 구현 세부 사항? – Angew

0

당신은 몇 가지 잘못된 일을하는 것 같다 : 다른 경우를 들어,이 빌드하는 동안 생성됩니다 나타 내기 위해 소스 파일에 설정할 수있는 소스 파일 속성 GENERATED있다.

시작하려면

'다른 프로젝트'는 무엇을 의미합니까? 실제로 '또 다른 표적'을 의미합니까?

하나의 프로젝트가 다른 프로젝트의 moc 파일을 사용하는 이유는 무엇입니까? 해당 프로젝트의 소스 파일도 사용하고 있습니까? 왜?

목표가 정적 (또는 기타) 라이브러리를 사용하지 않는 이유는 무엇입니까? 다른 프로젝트의 소스 파일을 사용하는 것이 무슨 이유인지 (단위 테스트 생성을 상상해보십시오), 다른 구현 세부 위치에서 파일을 가져 오는 대신 파일을 다시 moc해야합니다.