2016-12-08 20 views
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 
) 

答えて

1

のように見えるあなたがadd_custom_targetadd_dependenciesを試みることができます。

add_custom_target (
    npm-target 
    COMMAND npm run build 
) 
add_dependencies(tray-icon npm-target) 

あなたはAUTOGEN_TARGET_DEPENDS targetプロパティを使用して依存関係を追加することができるはずのコメントで述べた問題を克服するために。代わりに_automocターゲットの依存関係のリストに設定することができます。

+0

これは十分に良いようですが、問題は 'tray-icon'ターゲットの前に' tray-icon_automoc'ターゲットが自動的に生成されることです。これがQTがファイルが存在するかどうかを確認するステップです。 'add_dependencies(tray-icon npm-target)'を 'add_dependencies(tray-icon_automoc npm-target) 'に変更しようとすると、ターゲットが定義されていないというエラーが出ます。 – melanholly

+1

私はカスタムターゲット 'tray-icon_automoc'を追加し、' add_dependencies'をこのターゲットに依存するように変更して作ったので、正しく動作するようになりました。 – melanholly

関連する問題