使用Macos Sierra,CMake 3.7.2和QT 5.8.0与Homebrew安装。在此特定应用程序中,CMAKE完成没有错误的完成,但是在构建过程中,我会收到以下错误:
CMakeFiles/CereLink.dir/build.make:174: *** target pattern contains no `%'. Stop.
make[1]: *** [CMakeFiles/CereLink.dir/all] Error 2
make: *** [all] Error 2
有问题的线有Qt5::Core-NOTFOUND
这绝对是此应用程序的问题,因为我具有正确构建的其他QT5依赖性应用程序,并且该应用程序取决于链接QT5的外部物体,该应用程序也可以正确构建!
有问题的应用程序可以在线找到。
cmake似乎正确找到QT5。使用
FIND_PROGRAM(QT_QMAKE_EXECUTABLE_FINDQT
NAMES
qmake qmake5 qmake-qt5
PATHS
"${QT_SEARCH_PATH}/bin"
"$ENV{QTDIR}/bin"
)
SET(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE_FINDQT} CACHE PATH "Qt qmake program.")
EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} ARGS "-query QT_INSTALL_PREFIX" OUTPUT_VARIABLE QT_INSTALL_PREFIX)
message(${QT_INSTALL_PREFIX})
报告/usr/local/Cellar/qt5/5.8.0_1
find_package(Qt5 COMPONENTS Core REQUIRED)
或find_package(Qt5Core REQUIRED)
似乎都可以正常工作。有关证据,请参见下面的其他信息。
编辑 - 附加信息:
-
message(${Qt5Core_FOUND})
打印1
。 -
message(${Qt5Core_LIBRARIES})
打印Qt5::Core
- 手动设置
Qt5Core_DIR
而不是CMAKE_PREFIX_PATH
不更改任何东西。 - 链接
Qt5Core
或${Qt5Core_LIBRARIES}
(以及附加)无济于事。 -
get_target_property(QtCore_location Qt5::Core IMPORTED_LOCATION_RELEASE)
:/usr/local/Cellar/qt5/5.8.0_1/lib/QtCore.framework/QtCore
问题是我在配置另一个第三方库时正在覆盖CMAKE_IMPORT_LIBRARY_SUFFIX
。我花了一段时间才找到这个问题,因为它发生在所有调用QT之后。我想查找/链接QT的某些方面已推迟到配置完成后,因此设置了此变量后,这些递延方面必须使用CMAKE_IMPORT_LIBRARY_SUFFIX
。我的解决方案是创建一个新变量并设置/使用该方法,而不是依靠CMAKE_IMPORT_LIBRARY_SUFFIX
。