Переводит сборку на CMake

This commit is contained in:
Andrey Rodionov 2018-12-31 01:21:38 +03:00
parent 7f9bbfc9b8
commit 89d2560967
49 changed files with 362 additions and 489 deletions

1
.gitignore vendored
View File

@ -38,6 +38,7 @@ version.h
# qtcreator generated files
*.pro.user*
*.txt.user*
*.qbs.user*
*.qmlproject.user*
*.pluginspec

8
CMakeLists.txt Normal file
View File

@ -0,0 +1,8 @@
cmake_minimum_required(VERSION 3.10)
project(plugin VERSION 1.0.0)
add_subdirectory(src)
add_subdirectory(doc)
enable_testing()
add_subdirectory(tests)

23
cmake/doxygen.cmake Normal file
View File

@ -0,0 +1,23 @@
if (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
find_package(Doxygen)
if(DOXYGEN_FOUND)
set(DOXYGEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
add_custom_target( doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
install(FILES "${DOXYGEN_OUTPUT_DIR}/${PROJECT_NAME}.qch"
DESTINATION ${DOCPATH})
install(DIRECTORY "${DOXYGEN_OUTPUT_DIR}/${PROJECT_NAME}"
DESTINATION ${DOCPATH})
else()
message(WARNING "Doxygen not found, unable to generate documentation")
endif()
endif()

34
cmake/git.cmake Normal file
View File

@ -0,0 +1,34 @@
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
execute_process(
COMMAND git rev-list -1 HEAD -- .
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git describe --tags --always ${GIT_COMMIT}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git show -s --format=format:\"%ci\" ${GIT_COMMIT_HASH}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DATE_OUT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REPLACE "\"" "" GIT_DATE "${GIT_DATE_OUT}")
else(EXISTS "${CMAKE_SOURCE_DIR}/.git")
set(GIT_DATE "")
set(GIT_COMMIT_HASH "")
endif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
configure_file(
${CMAKE_SOURCE_DIR}/cmake/version.h.in
version.h
)
set(CMAKE_INCLUDE_CURRENT_DIR TRUE)

39
cmake/libs.cmake Normal file
View File

@ -0,0 +1,39 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
if ("${CMAKE_SOURCE_DIR}/src/3rdparty/${PROJECT_NAME}/src"
STREQUAL "${PROJECT_SOURCE_DIR}"
OR "${CMAKE_PROJECT_NAME}" STREQUAL "${PROJECT_NAME}")
# Пути к бинарным файлам
set(INCPATH "include")
set(RINCPATH "../include")
set(DOCPATH "share/doc/${PROJECT_NAME}")
if (UNIX)
set(RLIBRARYPATH "lib/${PROJECT_NAME}")
set(RLIBRARYTESTPATH "lib/${PROJECT_NAME}")
endif (UNIX)
if (WIN32)
set(RLIBRARYPATH "./")
set(RLIBRARYTESTPATH "./")
endif (WIN32)
endif()
# Места нахождения бинарных файлов
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}/${APPPATH}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_DIR}/${RLIBRARYPATH}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_DIR}/${RLIBRARYPATH}")
# Сборка проекта
include("${CMAKE_SOURCE_DIR}/cmake/rpath.cmake")
add_library(${PROJECT_NAME} SHARED ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES})
target_include_directories(${PROJECT_NAME}
PUBLIC ${PROJECT_SOURCE_DIR}/${RINCPATH}
)
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})
# Установка проекта
install (TARGETS ${PROJECT_NAME} DESTINATION ${RLIBRARYPATH})
file(GLOB PUBHEADERS "${RINCPATH}/${PROJECT_NAME}/*.h")
foreach(PUBFILENAME ${PUBHEADERS})
string(REPLACE "${RINCPATH}/${PROJECT_NAME}/" "" FILENAME ${PUBFILENAME})
install(FILES ${FILENAME} DESTINATION "${INCPATH}/${PROJECT_NAME}")
endforeach()

35
cmake/main.cmake Normal file
View File

@ -0,0 +1,35 @@
# Переменные описания проектов
add_definitions(-DAPP_NAME="""${PROJECT_NAME}"""
-DAPP_PRODUCT="""${PRODUCTNAME}"""
-DAPP_VERSION="""${PROJECT_VERSION}"""
-DAPP_DESCRIPTION="""${DESCRIPTION}"""
-DAPP_COMPANY="""${COMPANY}"""
-DAPP_COPYRIGHT="""${COPYRIGHT}""")
# Файлы для сборки
file(GLOB HEADERS "*.h")
file(GLOB SOURCES "*.cpp")
file(GLOB FORMS "*.ui")
file(GLOB RESOURCES "*.qrc")
# Пути к бинарным файлам
set(BINARY_DIR "${CMAKE_BINARY_DIR}")
set(APPPATH "bin")
set(INCPATH "include/${CMAKE_PROJECT_NAME}")
set(RINCPATH "include")
set(DOCPATH "share/doc/${CMAKE_PROJECT_NAME}")
set(TESTPATH "bin")
set(RPLUGINPATH "lib/${CMAKE_PROJECT_NAME}/plugins")
add_definitions(-DPLUGIN_DIR="""../${RPLUGINPATH}""")
if (UNIX)
set(RLIBRARYPATH "lib/${CMAKE_PROJECT_NAME}")
set(RLIBRARYTESTPATH "lib/${CMAKE_PROJECT_NAME}")
endif (UNIX)
if (WIN32)
set(RLIBRARYPATH "./")
set(RLIBRARYTESTPATH "./")
endif (WIN32)
include("${CMAKE_SOURCE_DIR}/cmake/qt.cmake")
include("${CMAKE_SOURCE_DIR}/cmake/git.cmake")

8
cmake/qt.cmake Normal file
View File

@ -0,0 +1,8 @@
# Поддержка Qt Framework
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC_OPTIONS -no-compress)
find_package(Qt5Core)
set(ignoreMe "${QT_QMAKE_EXECUTABLE}")

21
cmake/rpath.cmake Normal file
View File

@ -0,0 +1,21 @@
# Использование RPATH при установке в не системную директорию
#get_target_property(LIBS ${PROJECT_NAME} LINK_LIBRARIES)
foreach(LIB ${LIBRARIES})
get_property(LIBTYPE TARGET ${LIB} PROPERTY TYPE)
if (${LIBTYPE} STREQUAL "SHARED_LIBRARY")
get_property(LIBDIR TARGET ${LIB} PROPERTY LIBRARY_OUTPUT_DIRECTORY)
list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${LIBDIR}" isSystemDir)
if("${isSystemDir}" STREQUAL "-1")
file(RELATIVE_PATH RELPATH ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${LIBDIR})
list(FIND RPATHLIST ${RELPATH} EXISTRPATH)
if("${EXISTRPATH}" STREQUAL "-1")
list(APPEND RPATHLIST ${RELPATH})
if("${CMAKE_INSTALL_RPATH}" STREQUAL "")
set(CMAKE_INSTALL_RPATH "$ORIGIN/${RELPATH}")
else()
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/${RELPATH}")
endif()
endif()
endif()
endif()
endforeach()

6
cmake/version.h.in Normal file
View File

@ -0,0 +1,6 @@
#ifndef VERSION_H
#define VERSION_H
#define VER_REV "@GIT_DATE@ (@GIT_COMMIT_HASH@)"
#endif

3
doc/CMakeLists.txt Normal file
View File

@ -0,0 +1,3 @@
project(subprojects)
add_subdirectory(api)

4
doc/api/CMakeLists.txt Normal file
View File

@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 3.10)
project(plugin-api VERSION 1.0.0)
include(../doc.cmake)

View File

@ -58,7 +58,7 @@ PROJECT_LOGO =
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = ./
OUTPUT_DIRECTORY = @DOXYGEN_OUTPUT_DIR@
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and
@ -1112,7 +1112,7 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
HTML_OUTPUT = @PROJECT_NAME@/
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
@ -1365,13 +1365,15 @@ GENERATE_QHP = YES
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
QCH_FILE = ../@PROJECT_NAME@.qch
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_NAMESPACE = com.rtptechgroup.extension.001
QHP_NAMESPACE = com.company.project.001
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
@ -1380,7 +1382,7 @@ QHP_NAMESPACE = com.rtptechgroup.extension.001
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_VIRTUAL_FOLDER = plugin
QHP_VIRTUAL_FOLDER = project
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom

View File

@ -1,13 +0,0 @@
import "../main.qbs" as DocProduct
DocProduct {
name: "plugin-api"
type: "docs"
docName: "plugin-dev"
Group {
fileTagsFilter: ["docs"]
qbs.install: true
qbs.installDir: product.docPath
}
}

2
doc/doc.cmake Normal file
View File

@ -0,0 +1,2 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
include("${CMAKE_SOURCE_DIR}/cmake/doxygen.cmake")

View File

@ -1,5 +0,0 @@
Project {
references: [
"api/api.qbs"
]
}

View File

@ -1,62 +0,0 @@
import "../main.qbs" as MainProduct
import qbs;
import qbs.Process;
import qbs.TextFile;
MainProduct {
builtByDefault: false
FileTagger {
fileTags: ["docs"]
patterns: ["*.qch"]
}
Group {
name: "markdown"
files: ["pages/*.markdown"]
fileTags: ["markdown"]
}
Group {
name: "doxygen"
files: [product.sourceDirectory + "/Doxyfile"]
fileTags: ["doxyconf"]
}
property string docName: "doc"
Rule {
multiplex: true
inputs: ["doxyconf"]
outputFileTags: ["docs"]
outputArtifacts: [{filePath: product.docName + ".qch", fileTags: ["docs"]},
{filePath: product.docName + "/", fileTags: ["docs"]}]
prepare: {
var cmd = new JavaScriptCommand ();
cmd.description = "generating api documentation";
cmd.highlight = "doxygen";
cmd.sourceCode = function () {
for (var idx = 0; idx < inputs["doxyconf"].length; idx++) {
var file = inputs["doxyconf"][idx].filePath;
var doxFile = new TextFile(file);
var content = doxFile.readAll();
doxFile.close();
var proc = new Process ();
proc.setWorkingDirectory (product.sourceDirectory);
proc.start ("doxygen",["-"]);
proc.write(content);
proc.writeLine("HTML_OUTPUT = " + product.docName + "/");
proc.writeLine("QCH_FILE = ../" + product.docName + ".qch");
proc.writeLine("OUTPUT_DIRECTORY = " + product.buildDirectory);
proc.closeWriteChannel();
if (!proc.waitForFinished())
proc.kill();
proc.close();
}
}
return cmd;
}
}
}

View File

@ -1,74 +0,0 @@
import qbs
import qbs.File
import qbs.FileInfo
import qbs.Process
Product {
type: "dynamiclibrary"
property string productname: ""
property string version: "1"
property string description: ""
property string company: ""
property string copyright: ""
property string applicationPath: "bin/"
property string includePath: "include/plugin/"
property string docPath: "share/doc/plugin/"
Properties {
condition: qbs.targetOS.contains("linux")
property string rLibraryPath: "../lib/" + name + "/"
property string rLibraryTestPath: "../../../lib/" + name + "/"
}
Properties {
condition: qbs.targetOS.contains("windows")
property string rLibraryPath: ""
property string rLibraryTestPath: ""
}
property string pubIncludePath: sourceDirectory + "/../include"
cpp.defines: [
"APP_VERSION=" + "\"" + product.version + "\"",
"APP_COMPANY=" + "\"" + product.company + "\"",
"APP_PRODUCT=" + "\"" + product.productname + "\"",
"APP_DESCRIPTION=" + "\"" + product.description + "\"",
"APP_COPYRIGHT=" + "\"" + product.copyright + "\"",
"APP_NAME=" + "\"" + product.name + "\""
]
Depends { name: "cpp" }
Probe {
id: version
property stringList targetOS: qbs.targetOS
property string prjDir: project.sourceDirectory
property string prdDir: product.sourceDirectory
property int hack: {
//A bit of a hack to make qbs re-resolve (see QBS-996)
return File.lastModified(prjDir + "/.git/logs/HEAD");
}
configure: {
var cmd;
var args;
if (targetOS.contains("windows")) {
cmd = "cmd";
args = ["/c", prjDir+"/scripts/version.bat"];
}
if (targetOS.contains("linux")) {
cmd = "/usr/bin/sh";
args = ["-c", prjDir+"/scripts/version.sh"];
}
var p = new Process();
p.setWorkingDirectory(prdDir)
if (0 === p.exec(cmd, args)) {
found = true;
} else {
found = false;
}
p.close();
}
}
}

View File

@ -1,7 +0,0 @@
Project {
references: [
"src/plugin.qbs",
"doc/doc.qbs",
"tests/tests.qbs"
]
}

View File

@ -1,24 +0,0 @@
@echo off
for /f "tokens=*" %%m in ('git rev-list -1 HEAD -- .') do (
set commit=%%m
)
for /f "tokens=*" %%i in ('git describe --tags --always %commit%') do (
set ver=%%i
)
set test=-
if exist src\version.h (
for /F "TOKENS=2,3*" %%j in (version.h) do (
set test=%%j
)
)
for /f "tokens=*" %%k in ('git show -s --format^=format:%%ci %ver%') do (
set datever=%%k
)
if not %test%=="%ver%" (
echo #ifndef VERSION_H > src\version.h
echo #define VERSION_H >> src\version.h
echo #define VER_REV "%datever% (%ver%)" >> src\version.h
echo #endif >> src\version.h
)

View File

@ -1,15 +0,0 @@
#!/bin/sh
TVER=`cat src/version.h | grep '#define VER_REV'`
COMMIT=`git rev-list -1 HEAD -- .`
VER=`git describe --tags --always $COMMIT`
if [ "$TVER" != "#define VER_REV \"$VER\"" ]; then
DATE_REV=`git show -s --format=format:"%ci" $VER`
echo "#ifndef VERSION_H" > src/version.h
echo "#define VERSION_H" >> src/version.h
echo "#define VER_REV \"$DATE_REV ($VER)\"" >> src/version.h
echo "#endif" >> src/version.h
fi

17
src/CMakeLists.txt Normal file
View File

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.10)
project(plugin VERSION 1.0.0)
set(PRODUCTNAME "Plugin Library")
set(DESCRIPTION "Plugin Library")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
include("${CMAKE_SOURCE_DIR}/cmake/libs.cmake")
target_compile_definitions(${PROJECT_NAME} PRIVATE -DPLUGIN_LIBRARY)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

View File

@ -1,59 +0,0 @@
import qbs.File
import qbs.FileInfo
import "../main.qbs" as SrcProduct
SrcProduct {
name: "libs"
type: "dynamiclibrary"
Export {
Depends { name: "cpp" }
cpp.includePaths: product.pubIncludePath
cpp.rpaths: [product.rLibraryPath, product.rLibraryTestPath]
}
Group {
overrideTags: false
fileTagsFilter: [
"dynamiclibrary",
"dynamiclibrary_symlink",
"dynamiclibrary_import"
]
qbs.install: true
qbs.installDir: product.applicationPath + "/" + product.rLibraryPath
}
FileTagger {
condition: publicInclude.value.length > 0
patterns: publicInclude.value
fileTags: ["publicInclude"]
}
Group {
fileTagsFilter: ["publicInclude"]
qbs.install: true
qbs.installDir: product.includePath
}
Probe {
id: publicInclude
property stringList value
property string prjDir: project.sourceDirectory
property string incDir: product.pubIncludePath + "/" + product.name
property int hack: {
//A bit of a hack to make qbs re-resolve (see QBS-996)
return File.lastModified(prjDir + "/.git/logs/HEAD");
}
configure: {
var list = File.directoryEntries(incDir, File.Files);
for(var dir in list) {
list[dir] = FileInfo.fileName(list[dir]);
}
value = list;
}
}
}

View File

@ -1,23 +0,0 @@
import "./main.qbs" as LibProduct
LibProduct {
name: "plugin"
productname: "Plugin Library"
version: "1.0.0"
description: "Plugin Library"
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.defines: base.concat([
"PLUGIN_LIBRARY"
])
Depends { name: "Qt"; submodules: ["widgets"] }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
}

5
tests/CMakeLists.txt Normal file
View File

@ -0,0 +1,5 @@
project(subprojects)
add_subdirectory(auto)
add_subdirectory(benchmarks)
add_subdirectory(manual)

View File

@ -0,0 +1,8 @@
project(subprojects)
add_subdirectory(tst_plugin1)
add_subdirectory(tst_plugin2)
add_subdirectory(tst_plugin3)
add_subdirectory(tst_plugin4)
add_subdirectory(tst_pluginmanager)

12
tests/auto/auto.cmake Normal file
View File

@ -0,0 +1,12 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
# Места нахождения бинарных файлов
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
# Сборка проекта
include("${CMAKE_SOURCE_DIR}/cmake/rpath.cmake")
add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES})
add_test(${PROJECT_NAME} "${BINARY_DIR}/${TESTPATH}/${PROJECT_NAME}")
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})

View File

@ -1,9 +0,0 @@
Project {
references: [
"tst_plugin1/tst_plugin1.qbs",
"tst_plugin2/tst_plugin2.qbs",
"tst_plugin3/tst_plugin3.qbs",
"tst_plugin4/tst_plugin4.qbs",
"tst_pluginmanager/tst_pluginmanager.qbs"
]
}

View File

@ -1,10 +0,0 @@
import "../main.qbs" as TestProduct
TestProduct {
name: "auto"
type: "application"
Group {
fileTagsFilter: ["application"]
qbs.install: true
qbs.installDir: "tests/auto/plugin/"
}
}

14
tests/auto/plugins.cmake Normal file
View File

@ -0,0 +1,14 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
# Места нахождения бинарных файлов
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}/plugins")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}/plugins")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}/plugins")
# Сборка проекта
include("${CMAKE_SOURCE_DIR}/cmake/rpath.cmake")
add_library(${PROJECT_NAME} MODULE ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES})
target_include_directories(${PROJECT_NAME}
PUBLIC ${PROJECT_SOURCE_DIR}/include
)
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})

View File

@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 3.10)
project(tst_plugin1 VERSION 1.0.0)
set(PRODUCTNAME "TST_PLUGIN1")
set(DESCRIPTION "TST_PLUGIN1")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
set(LIBRARIES
plugin
)
include(../plugins.cmake)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

View File

@ -1,30 +0,0 @@
import "../main.qbs" as PluginProduct
PluginProduct {
name: "tst_plugin1"
type: "dynamiclibrary"
productname: "TST_PLUGIN1"
version: "1.0.0"
description: "TST_PLUGIN1"
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.defines: base.concat(["TST_PLUGIN1_LIBRARY"])
cpp.includePaths: base.concat(['.'])
Depends { name: "Qt"; submodules: ["widgets"] }
Depends { name: "plugin" }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
Group {
fileTagsFilter: ["dynamiclibrary"]
qbs.install: true
qbs.installDir: "tests/auto/plugin/plugins"
}
}

View File

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.10)
project(tst_plugin2 VERSION 1.0.0)
set(PRODUCTNAME "TST_PLUGIN2")
set(DESCRIPTION "TST_PLUGIN2")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
set(LIBRARIES
plugin
)
include(../plugins.cmake)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

View File

@ -1,32 +0,0 @@
import "../main.qbs" as PluginProduct
PluginProduct {
name: "tst_plugin2"
type: "dynamiclibrary"
productname: "TST_PLUGIN2"
version: "1.0.0"
description: "TST_PLUGIN2"
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.defines: base.concat(["TST_PLUGIN2_LIBRARY"])
cpp.includePaths: base.concat(['.'])
Depends { name: "Qt"; submodules: ["widgets"] }
Depends { name: "plugin" }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
Group {
fileTagsFilter: [
"dynamiclibrary",
"dynamiclibrary_import"]
qbs.install: true
qbs.installDir: "tests/auto/plugin/plugins"
}
}

View File

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.10)
project(tst_plugin3 VERSION 1.0.0)
set(PRODUCTNAME "TST_PLUGIN3")
set(DESCRIPTION "TST_PLUGIN3")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
set(LIBRARIES
plugin
)
include(../plugins.cmake)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

View File

@ -1,32 +0,0 @@
import "../main.qbs" as PluginProduct
PluginProduct {
name: "tst_plugin3"
type: "dynamiclibrary"
productname: "TST_PLUGIN3"
version: "1.0.0"
description: "TST_PLUGIN3"
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.defines: base.concat(["TST_PLUGIN3_LIBRARY"])
cpp.includePaths: base.concat(['.'])
Depends { name: "Qt"; submodules: ["widgets"] }
Depends { name: "plugin" }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
Group {
fileTagsFilter: [
"dynamiclibrary",
"dynamiclibrary_import"]
qbs.install: true
qbs.installDir: "tests/auto/plugin/plugins"
}
}

View File

@ -0,0 +1,17 @@
cmake_minimum_required(VERSION 3.10)
project(tst_plugin4 VERSION 1.0.0)
set(PRODUCTNAME "TST_PLUGIN4")
set(DESCRIPTION "TST_PLUGIN4")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
set(LIBRARIES
plugin
)
include(../plugins.cmake)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)

View File

@ -1,32 +0,0 @@
import "../main.qbs" as PluginProduct
PluginProduct {
name: "tst_plugin4"
type: "dynamiclibrary"
productname: "TST_PLUGIN4"
version: "1.0.0"
description: "TST_PLUGIN4"
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.defines: base.concat(["TST_PLUGIN4_LIBRARY"])
cpp.includePaths: base.concat(['.'])
Depends { name: "Qt"; submodules: ["widgets"] }
Depends { name: "plugin" }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
Group {
fileTagsFilter: [
"dynamiclibrary",
"dynamiclibrary_import"]
qbs.install: true
qbs.installDir: "tests/auto/plugin/plugins"
}
}

View File

@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.10)
project(tst_pluginmanager VERSION 1.0.0)
set(PRODUCTNAME "TST_PLUGINMANAGER")
set(DESCRIPTION "TST_PLUGINMANAGER")
set(COMPANY "RTPTechGroup")
set(COPYRIGHT "Copyright (C) RTPTechGroup")
set(LIBRARIES
plugin
)
include(../auto.cmake)
find_package(Qt5Core)
target_link_libraries(${PROJECT_NAME} Qt5::Core)
find_package(Qt5Widgets)
target_link_libraries(${PROJECT_NAME} Qt5::Widgets)
find_package(Qt5Test)
target_link_libraries(${PROJECT_NAME} Qt5::Test)

View File

@ -1,23 +0,0 @@
import "../main.qbs" as PluginProduct
PluginProduct {
name: "tst_pluginmanager"
productname: ""
version: "1.0.0"
description: ""
company: "RTPTechGroup"
copyright: "Copyright (C) RTPTechGroup"
cpp.includePaths: base.concat(['.'])
Depends { name: "Qt"; submodules: ["widgets", "testlib"] }
Depends { name: "plugin" }
files: [
"*.h",
"*.cpp",
"*.ui",
"*.qrc"
]
}

View File

@ -0,0 +1,2 @@
project(subprojects)

View File

@ -0,0 +1,12 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
# Места нахождения бинарных файлов
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
# Сборка проекта
include("${CMAKE_SOURCE_DIR}/cmake/rpath.cmake")
add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES})
add_test(${PROJECT_NAME} "${BINARY_DIR}/${TESTPATH}/${PROJECT_NAME}")
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})

View File

@ -1,3 +0,0 @@
Project {
references: []
}

View File

@ -1,5 +0,0 @@
import "../main.qbs" as TestProduct
TestProduct {
name: "manual"
type: "application"
}

View File

@ -1,6 +0,0 @@
import qbs.FileInfo
import "../main.qbs" as MainProduct
MainProduct {
name: "tests"
builtByDefault: false
}

View File

@ -0,0 +1,2 @@
project(subprojects)

View File

@ -1,10 +0,0 @@
import "../main.qbs" as TestProduct
TestProduct {
name: "manual"
type: "application"
Group {
fileTagsFilter: ["application"]
qbs.install: true
qbs.installDir: "tests/manual/plugin/"
}
}

11
tests/manual/manual.cmake Normal file
View File

@ -0,0 +1,11 @@
include("${CMAKE_SOURCE_DIR}/cmake/main.cmake")
# Места нахождения бинарных файлов
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BINARY_DIR}/${TESTPATH}")
# Сборка проекта
include("${CMAKE_SOURCE_DIR}/cmake/rpath.cmake")
add_executable(${PROJECT_NAME} ${HEADERS} ${SOURCES} ${FORMS} ${RESOURCES})
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})

View File

@ -1,4 +0,0 @@
Project {
references: [
]
}

View File

@ -1,7 +0,0 @@
Project {
references: [
"auto/auto.qbs",
"benchmarks/benchmarks.qbs",
"manual/manual.qbs"
]
}