Конвертируйте строки .pro в Qt в строки cmake - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужно преобразовать две строки из .pro-файла в Qt в соответствующие строки в CMake:

CONFIG - = staticlib

CONFIG + = shared

что я должензаписать в файл cmakelist, чтобы сгенерировать тот же эффект, что и этот?

.pro file:

#-------------------------------------------------
#
# Project created by QtCreator 2017-10-10T11:50:45
#
#-------------------------------------------------

QT       += testlib network concurrent xml
QT       -= gui
QT += xmlpatterns

DEFINES += CID_SDK_LIBRARY
CONFIG -= staticlib
CONFIG += shared

CONFIG(debug,debug|release) {
  message(Compiled in Debug)
  debug:   DESTDIR = debug
} else {
  message( Compiled in Release )
  release: DESTDIR = release
}

OBJECTS_DIR = $$DESTDIR/.obj
MOC_DIR = $$DESTDIR/.moc
RCC_DIR = $$DESTDIR/.qrc

TARGET = lib/cid-sdk
TEMPLATE = lib
#CONFIG += staticlib c++11
CONFIG += sharedlib c++11

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

#TEMPLATE = subdirs
#SUBDIRS += \
#    tests\UnitTests    # an "app" project


#UnitTests.depends = Nl.Aet.Cid.Client.Sdk Nl.Aet.Cid.Client.Sdk.Core Nl.Aet.Cid.Sdk.Desktop.Gateway

include(Nl.Aet.Cid.Client.Deps\Nl.Aet.Cid.Client.Deps.pri)
include(Nl.Aet.Cid.Client.Sdk.Core\Nl.Aet.Cid.Client.Sdk.Core.pri)
include(Nl.Aet.Cid.Client.Sdk\Nl.Aet.Cid.Client.Sdk.pri)
#include(Nl.Aet.Cid.Enabler\Nl.Aet.Cid.Enabler.pri)

##Desktop API
include(Nl.Aet.Cid.Sdk.Desktop.Gateway\Nl.Aet.Cid.Sdk.Desktop.Gateway.pri)
include(Nl.Aet.Cid.Client.Sdk.Desktop\Nl.Aet.Cid.Client.Sdk.Desktop.pri)

#Web API
include(Nl.Aet.Cid.Sdk.Web.Gateway\Nl.Aet.Cid.Sdk.Web.Gateway.pri)
include(Nl.Aet.Cid.Client.Sdk.Web\Nl.Aet.Cid.Client.Sdk.Web.pri)

unix {
    target.path = /usr/lib
    INSTALLS += target
}

note: Я отредактировал его, добавив файл .pro в соответствии с запросом.

Заранее спасибо.

1 Ответ

0 голосов
/ 17 февраля 2019

В qmake каждый файл .pro выдает «модуль» в структуре вашего проекта.Модуль имеет продукт.Этот продукт может быть исполняемым файлом / приложением, статической библиотекой или динамической / общей библиотекой.

С другой стороны, CMake не делает этого неявно.Чтобы добавить модуль, обычно нужно использовать функцию add_library.

Чтобы имитировать это конкретное поведение, вы должны написать

project("my_library")
set(sources <your source files go here>)
add_library("my_library" STATIC ${sources})

или

project("my_library")
set(sources <your source files go here>)
add_library("my_library" SHARED ${sources})

Теперь проблема в том, что нам не хватает списка sources.В вашем случае они определены в файлах .pri.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...