문제

최근 QT 소프트웨어에서 vs addin을 설치했으며 .pro 프로젝트를 VS2008로 가져 왔습니다. 일반적으로 모든 것이 작지만 성가신 예외로 잘 작동합니다.

파일이 있다고 가정 해 봅시다. 따라서 파일은 moc-ed이고 moc_file.cpp가 생성되며 "생성 된 파일"에서 솔루션에서 사용할 수 있습니다. 여태까지는 그런대로 잘됐다.

재미있는 점은 파일에서 무언가를 변경할 때 (예 : 라인을 추가)하고 Ctrl+s를 사용하여 파일을 저장하면 moc_file.cpp가 빌드에서 제외됩니다 (아이콘에 항목 표시가 표시되지 않습니다. ). F7을 눌러 솔루션을 구축 할 때 전형적인 링커 오류가 많이 발생했습니다. 상황을 해결하려면 moc_file.cpp의 속성으로 가서 "예"에서 "no"로 "build에서 제외"를 변경해야합니다. 그런 다음 모든 것이 잘 작동합니다.

다른 사람이 똑같이 경험하고 있습니까? 내가 뭔가 잘못하고 있습니까?

도움이 되었습니까?

해결책

문제 해결됨. 프로젝트를 설명하는 손으로 만들어진 .pro 파일에서 moc_dir를 다음과 같이 지정했다는 것을 알았습니다.

moc_dir = .moc

"생성 파일"의 Visual Studio Directory로 가져온 후 릴리스 및 디버그 모두에서 동일했습니다. 예를 들어 활성 구성이 디버그되었을 때 파일을 저장했을 때 RPG와 Andrew가 제안한 것처럼 릴리스 관련 파일에 합리적이기 때문에 빌드에서 제외되었습니다. 디렉토리를 .moc $ (configurationName)로 변경 한 후 문제가 더 이상 보이지 않습니다 (그리고 내 솔루션에 생성 된 각 파일의 2 가지 버전이 나타납니다 - 각 구성마다 하나씩).

모두 도와 주셔서 감사합니다!

다른 팁

실제로, 나는 그 "기능"에 대한 해결책을 찾았습니다. GeneratedFiles Debug 및 GeneratedFiles Debug (또는 다른 구성 디렉토리)에서 두 파일을 추가해야합니다. QT는 현재 선택된 빌드 유형에 속하지 않는 모든 것을 빌드에서 제외합니다.

예, 최신 vs addin을 사용하고 내 프로젝트는 QT 프로젝트로 올바르게 간주됩니다.

구성을 올바르게 설정 했습니까?

"디버그 구성 설정"창을 엽니 다음과 같이 다음 항목을 설정하십시오.

  • "Command Line 빌드"QMAKE -Project & QMake & Nmake 디버그
  • "Clean Commands"Nmake Debug-Clean
  • "Rebuild Command Line"Qmake & Nmake Debug

릴리스 구성으로 동일하게 반복하십시오

VS2008 (2003 년도)에서 빌드 동작에서 제외 된 것을 보았지만 프로젝트는 올바르게 구축됩니다. Moc'able 파일을 변경하면 QT는 Moc'ed 파일이 구식이므로 재현해야합니다.

QT의 알고리즘은 다음과 같습니다.

  • 해당 파일이 변경되었습니다
  • 이전 MOC 파일을 빌드에서 제외하여 설정하십시오
  • 같은 이름으로 프로젝트에 새 파일을 추가하고 빌드에 포함시킵니다.

VS 2003 프로젝트를 살펴보면 일부 MOC_* 파일이 프로젝트에 두 번 포함되어 있고 한 버전은 빌드에서 제외되고 다른 버전은 그렇지 않다는 것을 알 수 있습니다.

재현 .vsproj qmake를 사용하는 파일은 문제를 해결할 수 있습니다.

가지고있는 모든 qobject 파일에 대해 QT 플러그인은 모든 빌드 구성에 대한 MOC_ 파일을 만듭니다 (일반적으로 디버그 및 릴리스). 현재 구성을 변경하면 항목 부호가 한 파일에서 다른 파일로 이동하지 않는 것을 볼 수 있습니다.
.CPP 파일을 변경할 때 MOC_ 파일이 변경되지 않아야합니다. .H 파일을 변경할 때만 ..이 모든 것이 귀하의 구성에 문제가 발생했으며 실제로 문제를 해결하는 가장 좋은 방법은 다음과 같은 것을 사용하여 QMAKE로 재현하는 것입니다.

qmake -spec win32-msvc2008
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top