我正在用 CMake 构建一个 Qt 项目。在 macOS 或 Windows 上使用 cmake-3.8.2 一切正常。在我有 cmake-2.8.12.2 的 Ubuntu 14 上,运行 moc,但未运行 uic。在CMakeLists.txt
我有:
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
并且 .ui 文件没有在任何地方指定(但具有相同的类,所以我有 SDFDialog.h、SDFDialog.cpp、SDFDialog.ui)
在带有 cmake-2.8.12.2 的 Ubuntu 14 上,这是输出:
$ cmake --build .
Scanning dependencies of target v_repExtSDF_automoc
[ 4%] Automoc for target v_repExtSDF
Generating moc_SDFDialog.cpp
Generating moc_UIFunctions.cpp
Generating moc_UIProxy.cpp
[ 4%] Built target v_repExtSDF_automoc
Scanning dependencies of target v_repExtSDF
[ 8%] Building CXX object CMakeFiles/v_repExtSDF.dir/ImportOptions.cpp.o
[ 12%] Building CXX object CMakeFiles/v_repExtSDF.dir/SDFDialog.cpp.o
/home/user/Development/V-REP_PRO_EDU_V3_4_0_64_Linux.rev9/programming/v_repExtSDF/SDFDialog.cpp:4:26: fatal error: ui_SDFDialog.h: No such file or directory
#include "ui_SDFDialog.h"
^
compilation terminated.
make[2]: *** [CMakeFiles/v_repExtSDF.dir/SDFDialog.cpp.o] Error 1
make[1]: *** [CMakeFiles/v_repExtSDF.dir/all] Error 2
make: *** [all] Error 2
而在具有 cmake-3.8.2 uic 的 macOS 上正确运行:
$ cmake --build .
Scanning dependencies of target v_repExtSDF_autogen
[ 4%] Automatic MOC and UIC for target v_repExtSDF
Generating MOC source v_repExtSDF_autogen/EWIEGA46WW/moc_SDFDialog.cpp
Generating MOC source v_repExtSDF_autogen/EWIEGA46WW/moc_UIFunctions.cpp
Generating MOC source v_repExtSDF_autogen/EWIEGA46WW/moc_UIProxy.cpp
Generating MOC compilation v_repExtSDF_autogen/moc_compilation.cpp
Generating UIC header v_repExtSDF_autogen/include/ui_SDFDialog.h
[ 4%] Built target v_repExtSDF_autogen
...
这是错误还是缺少功能?如果缺少功能,最低要求的 cmake 版本是多少?是否有一些解决方法可以让 uic 在 cmake-2.8.12.2 上运行而无需过多更改CMakeLists.txt ?