Я пытаюсь создать приложение на основе QT с CMake и все будет достаточно хорошо. Я последовал за this учебником, и я могу создать свое приложение. Теперь я хочу запустить npm run build
, прежде чем строить с использованием add_custom_command
, похоже, что он не соответствует ожиданиям.Запустить команду npm до конкретной цели cmake
Процесс сборки завершается с
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'
Можете ли вы сказать мне, как выполнить команду npm
перед этапом проверки сборки на tray-icon/systray.qrc
?
Это мой 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 (лот-значок npm-target)' на 'add_dependencies (tray-icon_automoc npm-target)', я получаю ошибку, что цель не определена. – melanholly
Я сделал это, добавив пользовательский целевой лоток-icon_automoc, а затем, изменив «add_dependencies», чтобы зависеть от этой цели, я заставил ее работать правильно. – melanholly