2017-06-23 177 views
0

最近C++の知識をリフレッシュし始めました。 QtCreatorを使用することを選んだのは、私が一度だけ試したQtについてもっと知りたかったからです。QMakeプロジェクトをCMakeに変換する

私はqmakeプロジェクトを作成しましたが、すべてうまく動作しますが、私もcmakeについて学びたいと思います。そのためにプロジェクトをcmakeに変換することを考えました。

残念ながら、C++のビルドプロセスに関する知識は非常に小さく、私のプロジェクトが比較的小さいので、私は通常、IDEにすべてのものを処理させます。

ここで、qmake .proファイルをcmake CMakeLists.txtに移動するのを手伝ってください。とても簡単です。

QT  += core gui 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = model_view_playground 
TEMPLATE = app 

DEFINES += QT_DEPRECATED_WARNINGS 

QMAKE_CXXFLAGS += -std=c++0x 

SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    testitemlistmodel.cpp 

HEADERS += mainwindow.h \ 
    testclass.h \ 
    testitemlistmodel.h 

FORMS += mainwindow.ui 

DISTFILES += 

私は「プラグアンドプレイ」を取得通常のソリューションを好きではないが、私はcmakeのに飛び込む前に、私はこれを変換持っており、それを構築することができるようにしたいと思います。

ビルドに関しては、それは多分別の質問ですが、誰かがこれに答えることもできます。プロジェクトでqmakeの代わりにcmakeを使うようにQtCreatorを変更する必要がありますか(理想的にはcmakeとqmakeの間で切り替えることができるように並べて)?

すでにCMakeがBuild & Run-> CMake(自動検出されました)に追加されています。

+0

は '私は「プラグアンドプレイ」を取得するために好きではないcmakeのプロジェクトとして認識します通常は解決策ですが、... - 私たちはそのような質問もあまり好きではありません。あなたは尋ねる前にStack Overflowを検索しようとしたことがありますか? QT→CMake変換についてはすでに[8つの質問]([cmake] [qmake] convert)があります。 – Tsyvarev

答えて

1

Qtプログラミングのためのqmakeとcmakeの違いは、すでにQtライブラリとソースが見つかっているqmakeです。 CMakeはそれを知らず、あなたはおそらくライブラリのポイント・ツー・ライト・ロケーションを持っています。通常は、環境変数QT_DIRを宣言します。私はこのようなスクリプトがサービスを提供する単純なプロジェクトのためにcmakeの

project(Qt5Project) # Your project name 

set(CMAKE_CXX_STANDARD 11) # This is equal to QMAKE_CXX_FLAGS += -std=c++0x 

# Find includes in corresponding build directories 
set(CMAKE_INCLUDE_CURRENT_DIR ON) 
# Instruct CMake to run moc automatically when needed. 
set(CMAKE_AUTOMOC ON) 
# Instruct CMake to run uic automatically when needed. 
set(CMAKE_AUTOUIC ON) 

# This will find the Qt5 files. You will need a QT5_DIR env variable 
find_package(Qt5Widgets REQUIRED) # Equivalent of QT += widgets 

set(SOURCES main.cpp mainwindow.cpp testitemlistmodel.cpp) 
set(HEADERS mainwindow.h testclass.h testitemlistmodel.h) 
set(UI mainwindow.ui) 

# This will create you executable 
add_executable(model_view_playground ${SOURCES} ${HEADERS} ${UI}) 
# This will link necessary Qt5 libraries to your project 
target_link_libraries(model_view_playground Qt5::Widgets) 

にQt4をプロジェクトを作成する方法を忘れてしまったので、私はQt5を使った例を配置します。

QtCreatorが既にcmakeのプロジェクトをサポートしている、あなたはそれの内側にCMakeLists.txtでフォルダを開く必要がありますし、IDEは

+0

素敵な、ありがとう。 .proファイル 'QT + = core gui'の最初の行についてはほんの少しだけ疑問に思えます。私はcmakeファイル内の参照の種類を参照してください、それは省略することができますか?とにかくQt5(5.8)プロジェクトです。だから私が理解している 'QT5_DIR'はプロジェクトごとに設定する必要がありますか?または、 "キット"(オプション - >ビルド&実行 - >キット)用に設定することもできます。私は自分のプロジェクト構築環境をチェックしたし、私のシステム環境はQTDIRが既に定義されているようだ。それで十分でしょうか? – user1970395

+0

Qt5Widgetsを含めると、Qt5Widgetsが必要なのでQt5CoreとQt5Guiが含まれます。 QT5_DIRは、OS環境変数で設定する必要があります。もう1つのオプションは、スクリプト内のポイントツーライト位置ですが、これは少し複雑です –

+0

説明をありがとうございます。さて、私はQTDIR(実際にはgccのQt5.8を指しています)がQtフレームワークのインストール中に設定されていると仮定しますので、明示的に試してみましょう。右。 QtCreatorで同じプロジェクトをqmakeやcmakeでプロジェクトを閉じずにコンパイルする方法があれば(例えば別のビルドと実行の設定を使用するなど)、プロジェクトを閉じてどちらかのプロジェクトを開く必要がありますか.proまたはCMakeLists.txtを使用してqmakeまたはcmakeをそれぞれ使用しますか? – user1970395

関連する問題