Мы сделаем это с помощью cmake, так как это то, что вы должны использовать для любого нового проекта, и с ним справиться в 10 раз проще, чем с необходимыми тремя (3!) Проектными файлами для qmake. Не стоит того. Это даже не передаваемый навык.
Итак, допустим, у нас будет библиотека mylibrary
stati c, которая будет связана с исполняемым файлом myexe
.
Чтобы получить запустили, просто добавьте четыре файла ниже в папку (они завершены) и откройте проект в Qt Creator. Выберите предпочитаемый сборочный комплект (комбинация компилятора и сборки Qt). Затем нажмите Ctrl-B (или ⌘-B на Ma c) и дождитесь окончания сборки до 10 sh. Затем Ctrl-R / ⌘-R, чтобы запустить его. Должно появиться сообщение.
Начиная с этого момента, вы захотите прочитать некоторую документацию по cmake, чтобы выяснить, что означают все перечисленные ниже, особенно различия PRIVATE / INTERFACE / PUBLI C.
# CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(test10 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
add_library(mylibrary STATIC
lib.cpp
lib.h
)
target_link_libraries(mylibrary PUBLIC Qt5::Core)
target_include_directories(mylibrary PUBLIC .)
add_executable(myexe
main.cpp
)
target_link_libraries(myexe PRIVATE Qt5::Widgets mylibrary)
Библиотека предоставляет простую getString()
функцию:
// lib.h
#pragma once
#include <QString>
namespace lib {
QString getString();
};
// lib.cpp
#include "lib.h"
namespace lib {
QString getString() {
return QStringLiteral("Hello, world!");
}
}
Исполняемый файл показывает сообщение с использованием этой функции:
// main.cpp
#include <lib.h>
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMessageBox::information(nullptr, "Information", lib::getString());
}
Это, вероятно, самая простая способ достичь этого. Я даже не буду добавлять эквивалентный пример qmake: вам понадобятся три .pro
файла, и нет автоматического c способа связать выходные данные подпроекта. CMake - простой способ.