MacOS Sierraを使用して、cmake 3.7.2とqt 5.8.0を自作してインストールします。この特定のアプリケーションでは、cmakeのは、エラーなしで完了しますが、ビルド時に、私は次のエラーを取得する:cmakeはQt5Coreを見つけますが、build.makeは "Qt5 :: Core-NOTFOUND"を報告します
CMakeFiles/CereLink.dir/build.make:174: *** target pattern contains no `%'. Stop.
make[1]: *** [CMakeFiles/CereLink.dir/all] Error 2
make: *** [all] Error 2
問題のある行は、私は他のQt5依存のアプリケーションを持っているとして、それは間違いなく、このアプリケーションに問題があるQt5::Core-NOTFOUND
を持っていますこのアプリケーションは正しくビルドされたQt5をリンクするExternalProjectに依存しています。
問題のあるアプリケーションはonlineです。
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)
両方が正しく動作するように見える報告します。証拠については下記の追加情報を参照してください。
EDIT - 追加情報:
message(${Qt5Core_FOUND})
プリント1
。手動Qt5Core_DIR
代わりのCMAKE_PREFIX_PATH
何も変更しない設定message(${Qt5Core_LIBRARIES})
プリントQt5::Core
- 。
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_BUILD_TYPE *)はどれですか? QT5 :: Coreのような* IMPORTED *ターゲットの* LOCATION *プロパティを抽出するのが有効かどうかは分かりません。[documentation](https://cmake.org/cmake/help/v3.7/prop_tgt)によると、 /LOCATION.html)、この読み取り専用プロパティは、指定されていないコンフィグレーションのLOCATION_プロパティの値を返します。はターゲットによって提供されます。 –
Tsyvarev
'target_link_libraries($ {target} PRIVATE Qt5Core)'はどうですか? 'find_package(Qt5 COMPONENTS Core REQUIRED)'でインポートする場合にのみ、 'Qt5 :: Core'という構文を使用することができます。 – oLen
@Tsyvarev、問題は、XcodeでDebugまたはReleaseを使用している場合でも、gnu-makeでReleaseを使用している場合でも存続します。 'get_target_property'の呼び出しは、Qt5 :: Core 'target'が存在し、合理的な値を持っていることを示すことを目的としていました。 –