2016-05-18 12 views
3

<header>files.uiで作成すると、カスタムウィジェットでcmakeが動作します。QT:.uiファイル内のヘッダー

私はこのようなCMakeListsをしました:私は私のconversionform.uiに見れば、私のようなものをした

[ 65%] Building CXX object CMakeFiles/qtelec.dir/home/mea/workspace/repos/qtelec/qtelec/src/forms/conversionform.cpp.o 
In file included from /home/mea/workspace/repos/qtelec/qtelec/src/forms/conversionform.cpp:2:0: 
/home/mea/workspace/repos/qtelec/build/ui_conversionform.h:18:40: fatal error: ../widgets/canecoboxwidget.h: Aucun fichier ou dossier de ce type 
compilation terminated. 

cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR) 

project(qtelec C CXX) 

set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt5.6.0/5.6/gcc_64) 
set(SRC_BASE_DIR "../../../qtelec") 
set(COREALPI_BUILD_DIR "../../../../corealpi/build") 

set(CMAKE_AUTOMOC ON) 
set(CMAKE_INCLUDE_CURRENT_DIR ON) 
set(CMAKE_AUTOUIC ON) 
set(CMAKE_AUTORCC ON) 

find_package(Qt5Widgets REQUIRED) 

file(GLOB_RECURSE SRC_FILES 
    ${SRC_BASE_DIR}/src/*.h 
    ${SRC_BASE_DIR}/src/*.cpp 
) 

link_directories(${COREALPI_BUILD_DIR}/elec) 
link_directories(${COREALPI_BUILD_DIR}/elec/core) 

add_library(qtelec SHARED 
    ${SRC_FILES} 
) 

add_subdirectory(${SRC_BASE_DIR}/../platform/cmake/qtutils ${CMAKE_BINARY_DIR}/qtutils) 
include_directories(${SRC_BASE_DIR}/../external/qtpropertybrowser/latest/src) 
include_directories(${SRC_BASE_DIR}/../qtutils/src) 
#include_directories(${SRC_BASE_DIR}/src/widgets) 
include_directories(${COREALPI_BUILD_DIR}/../include/ca) 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 

target_link_libraries(qtelec qtpropertybrowser elec core qtutils Qt5::Widgets) 

cmake ..作品が、cmake --build .は私に次のエラーを与えますその(と他のfiles.uiも):

<customwidgets> 
    <customwidget> 
    <class>CanecoBoxWidget</class> 
    <extends>QWidget</extends> 
    <header>../widgets/canecoboxwidget.h</header> 
    <container>1</container> 
    </customwidget> 
</customwidgets> 

ui_generatedファイルは私のビルドフォルダにあるので、cmakeがパス../widgets/を見つけようとすると、彼は存在しません。ここに私のフォルダ構造は次のとおりです。私が見つけ

├── build 
├── qtelec 
│ ├── src 
│  └── *.h 
│  └── *.cpp 
│  └── editors 
│    └── *.h 
│    └── *.cpp 
│    └── *.ui 
│  └── forms 
│    └── *.h 
│    └── *.cpp 
│    └── *.ui 
│  └── widgets 
│    └── *.h 
│    └── *.cpp 
│    └── *.ui 
├── cmake/CMakelists.txt 

唯一の解決策は、include_directories(${SRC_BASE_DIR}/src/widgets)とディレクトリを含めることです。

しかし私は、CMakeやQTに追加のインクルードなしで動作させる方法があると思いますか?

.proファイルでは、このフォルダを含める必要はありません。

解決策を見つけてもらえますか?

さらに詳しい情報が必要な場合は、私はそれを与えることができます。

ありがとうございました。

答えて

1

.uiファイルから生成されるファイルは、$ {CMAKE_SOURCE_DIR}ではなく、$ {CMAKE_BINARY_DIR}に配置されます。あなたの場合は/home/mea/workspace/repos/qtelec/build/です。ご覧のとおり、/home/mea/workspace/repos/qtelec/build/../widgets/canecoboxwidget.hはありません。

適切な解決策は、qt_wrap_uiコマンドを使用することです。

関連する問題