1
CMakeを使用してQTベースのアプリケーションを構築しようとしています。私はthisチュートリアルの後に私のアプリケーションを構築することができます。今はadd_custom_command
を使ってビルドする前にnpm run build
を実行したいと思っています。特定のcmakeターゲットの前にnpmコマンドを実行します。
ビルドプロセスは、あなたがどのようにtray-icon/systray.qrc
のビルド検証工程の前にnpm
コマンドを実行することを教えてもらえます
RCC: Error in 'tray-icon/systray.qrc': Cannot find file 'html/js/app.full.js'
AUTORCC: error: process for.build/Debug/x64/tray-icon/CMakeFiles/tray-icon.dir/qrc_systray.cpp failed:
RCC: Error in 'tray-icon/systray.qrc': Cannot find file 'html/js/app.full.js'
で失敗しますか?
これは私のcmakeのファイルである
cmake_minimum_required(VERSION 2.8.11)
project(tray-icon)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Widgets 5.5)
find_package(Qt5Qml 5.5)
find_package(Qt5WebEngine 5.5)
find_package(Qt5WebEngineCore 5.5)
find_package(Qt5WebEngineWidgets 5.5)
# generate rules for building source files from the resources
set(SOURCES tray-icon.cpp window.cpp systray.qrc)
set(CMAKE_VERBOSE_MAKEFILE 1)
#adds target
add_executable(tray-icon ${SOURCES})
# custom build command for javascript part of the application
add_custom_command (
TARGET "tray-icon"
PRE_BUILD COMMAND npm run build
)
# Find the QtWidgets library
target_link_libraries(tray-icon
Qt5::Widgets
Qt5::WebEngine
Qt5::WebEngineWidgets)
install(TARGETS tray-icon DESTINATION .)
PS:私の最終的な解決策は、この
# custom build command for javascript part of the application
add_custom_target(
tray-icon_automoc
)
add_custom_target (
npm-target
COMMAND cd ${PROJECT_SOURCE_DIR} && cd html && npm install && npm run build
)
これは十分に良いようですが、問題は 'tray-icon'ターゲットの前に' tray-icon_automoc'ターゲットが自動的に生成されることです。これがQTがファイルが存在するかどうかを確認するステップです。 'add_dependencies(tray-icon npm-target)'を 'add_dependencies(tray-icon_automoc npm-target) 'に変更しようとすると、ターゲットが定義されていないというエラーが出ます。 – melanholly
私はカスタムターゲット 'tray-icon_automoc'を追加し、' add_dependencies'をこのターゲットに依存するように変更して作ったので、正しく動作するようになりました。 – melanholly