Fraunhofer-IIS / libjapi

libjapi is a universal JSON to C API library. It receives newline-delimited JSON (NDJSON) messages via TCP and calls registered C functions. A JSON response is returned for each request. Furthermore, it is also possible to create push services, which asynchronously push JSON messages to the clients subscribed to them.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Switched to Cmake - [merged]

fraunhofer-iis-bot opened this issue · comments

In GitLab by @fraunhofer-iis-anon on Mar 20, 2020, 14:01

Merges issue_14 -> dev

  • gitlab-ci.yml file updated
  • spec file updated
  • doc target to cmake added
  • test target to cmake added
  • dockerfile updated (cmake3)

In GitLab by @fraunhofer-iis-anon on Mar 20, 2020, 14:04

added 3 commits

  • bce3ce0b...cd38f2c5 - 2 commits from branch dev
  • 31fae70c - Switched to Cmake

Compare with previous version

In GitLab by @bmi on Mar 23, 2020, 17:26

Commented on CMakeLists.txt line 5

Das ist nur cpp standart. libjapi ist eine c libraray daher muss der c standard mit angegben werden, so wie es auch in der makefile war.

  • set(CMAKE_CXX_STANDARD 11)
  • set(CMAKE_CXX_STANDARD_REQUIRED ON)
  • set(CMAKE_C_STANDARD 99)
  • set(CMAKE_C_STANDARD_REQUIRED ON)

DAs Required sorgt dafür das wenn der standart im compiler nicht vorhanden ist keine buildfile erzeugt wird. was bei diesem alten standart aber eher nicht auftreten wird.

In GitLab by @bmi on Mar 23, 2020, 17:35

Commented on CMakeLists.txt line 10

Was fehlt sind compiler flags setzen. In der Regel setzt cmake schon recht gute flags aber besser ist immer sie correct zu setzen wie man es auch in der makefile gemacht hat.

für cpp laufts dann so
set(warnings "-Wall -Wextra -Werror -pedantic")
set(muticore "-pthread")
set(optimize "-O3")
set(optimizeDebug "-O0")

set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${warnings} ${multicore} ${optimizeDebug}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${warnings} ${multicore} ${optimize}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")

cd CXX einfach gegen C austauschen für die C compiler flags
Die Flags dann noch den von der Makefile anpassen. das obere ist nur ein example von mir.

In GitLab by @bmi on Mar 23, 2020, 17:37

Commented on gitlab-ci/Dockerfile line 6

cmake solte reichen, das sollte immer die neuste version von cmake laden. cmake3 ist aber jetzt auch nicht falsch. Falls cmake in version 4 kommt wird diese aber nie verwendet.

In GitLab by @bmi on Mar 23, 2020, 17:41

Commented on CMakeLists.txt line 70

cmake can auch unit test. dazu muss

  • "enable_testing()"
  • "include(GoogleTest)"

aktiviert werden. weitere erklärungen siehe weiter unten. gtest to c-test

In GitLab by @bmi on Mar 23, 2020, 17:53

Commented on CMakeLists.txt line 91

  • gtest_discover_tests(testsuite)

setzt alle gTest zu CTest files.

CTest kann dann mit dem befehlt.

  • "make test"

gestartet werden. dabei werden dann automatisch alle test von gTest geladen und ausgewertet. wie als würde man gtest direct starten.

In GitLab by @bmi on Mar 23, 2020, 17:58

Commented on CMakeLists.txt line 37

file(GLOB SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/.cpp)
file(GLOB HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/inc/
.h)

macht das laden von files dynamischer und spart später anpassungen an cmake

add_library(japi_objs OBJECT ${SOURCES} ${HEADERS})

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 12:31

Commented on gitlab-ci/Dockerfile line 6

Das habe ich getestet. Es muss explizit Version 3 angegeben werden, ansonsten nimmt er Version 2.8.

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 12:49

Commented on CMakeLists.txt line 91

CMake meint er kennt das Command nicht:

[and@localhost build]$ cmake3 --version
cmake3 version 3.14.6

CMake suite maintained and supported by Kitware (kitware.com/cmake).
[and@localhost build]$ cmake3 ../
CMake Warning at googletest/googletest/CMakeLists.txt:54 (project):
  VERSION keyword not followed by a value or was followed by a value that
  expanded to nothing.


CMake Error at CMakeLists.txt:114 (gtest_discover_tests):
  Unknown CMake command "gtest_discover_tests".


-- Configuring incomplete, errors occurred!
See also "/home/and/src/libjapi-demo/libjapi/build/CMakeFiles/CMakeOutput.log".
See also "/home/and/src/libjapi-demo/libjapi/build/CMakeFiles/CMakeError.log".
[and@localhost build]$ 

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 12:54

Commented on CMakeLists.txt line 37

changed this line in version 3 of the diff

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 12:54

added 1 commit

  • 238e3b6f - added missing gcc/g++ flags

Compare with previous version

In GitLab by @bmi on Mar 24, 2020, 14:21

Commented on CMakeLists.txt line 91

Sollter er eigentlich seit 3.10 kennen laut dokumentation
[https://cmake.org/cmake/help/v3.10/module/GoogleTest.html](cmake doc gTest)

Hast du auch vorher noch, bevor die executable gebaut wird,

  • "enable_testing()"
  • "include(GoogleTest)"

gesetzt erst mit diesen 2 befehlen werden die richtigen cmake module geladen.

In GitLab by @bmi on Mar 24, 2020, 14:23

Commented on gitlab-ci/Dockerfile line 6

ja ok ist halt linux da macht jedes repo was anderes, Hab mit ubuntu 18.04 auch das problem das die noch ein veralteten gcc im standart install haben und meine codes immer nicht laufen. dann lass so.

In GitLab by @bmi on Mar 24, 2020, 14:24

Commented on CMakeLists.txt line 5

perfect

In GitLab by @bmi on Mar 24, 2020, 14:27

Commented on CMakeLists.txt line 34

die zeilen können ja dann weg sind ja schon durch das dynmiche laden geladen worden weiter oben.

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 15:10

marked as a Work In Progress

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 15:17

Commented on CMakeLists.txt line 91

Das war das Problem, danke. Weißt du wie man dem "make test" target als dependency die testsuite target mitgeben kann, also damit die executable automatisch gebaut wird per make test?

In GitLab by @bmi on Mar 24, 2020, 15:24

Commented on CMakeLists.txt line 91

Macht er das nicht automatisch? Bin mir gerade nicht sicher aber make test sollte jetzt dann eigentlich den testsuite bauen und ausführen. wenn er es nicht baut dann das EXCLUDE_FROM_ALL rausnehmen dann sollte es eigentlich gehen.

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 15:27

Commented on CMakeLists.txt line 91

Aber dann baut er es beim make mit. Ich glaube das wollen wir getrennt haben. Also einmal make und wenn man testen will, dann ein make test wo er automatisch die testsuite mit baut.
Das EXCLUDE_FROM_ALL habe ich extra deshalb mit reingenommen.

In GitLab by @bmi on Mar 24, 2020, 16:07

Commented on CMakeLists.txt line 91

ok hast recht make test baut nicht. das ist wirklich blöd. hab mal gegoogled das ist auch bekanntes problem:

Lösung ist wieder custom target mit:
add_custom_target(run_tests COMMAND ${CMAKE_CTEST_COMMAND})
add_dependencies(run_tests testsuite)

aber dann kannst auch gleich deine lösung so lassen. Ausser ihr wollt auch die test mit in CI/CD check mit einbinden dann geht das mit ctest denke ich mal besser und universeller

In GitLab by @fraunhofer-iis-anon on Mar 24, 2020, 16:22

Commented on CMakeLists.txt line 91

@cstender was meinst du? Sollen wir die targets separieren oder die unit test executable gleich defaultmäßig mit bauen?

In GitLab by @fraunhofer-iis-anon on Mar 25, 2020, 11:54

Commented on CMakeLists.txt line 10

changed this line in version 4 of the diff

In GitLab by @fraunhofer-iis-anon on Mar 25, 2020, 11:54

Commented on CMakeLists.txt line 34

changed this line in version 4 of the diff

In GitLab by @fraunhofer-iis-anon on Mar 25, 2020, 11:54

added 1 commit

  • a5cf4f7e - fixed: expand include and src dirs

Compare with previous version

In GitLab by @fraunhofer-iis-anon on Mar 25, 2020, 11:55

unmarked as a Work In Progress

In GitLab by @cstender on Apr 2, 2020, 16:26

Commented on CMakeLists.txt line 91

Baut sie meinetwegen gerne mit.

In GitLab by @cstender on Apr 2, 2020, 16:54

added 1 commit

  • 8ed1ec66 - changed doxyfile to be a template file handled by CMake

Compare with previous version

In GitLab by @cstender on Apr 2, 2020, 16:55

Commented on .gitignore line 2

ich denke lib kannst du auch löschen

In GitLab by @cstender on Apr 2, 2020, 17:11

Commented on package/libjapi.spec line 39

Wird das Doxyfile und das doxydir wirklich gebraucht, um die generierte Dokumentation ohne Fehler anzuschauen? Bitte testen.

In GitLab by @cstender on Apr 2, 2020, 17:16

Commented on package/libjapi.spec line 39

changed this line in version 6 of the diff

In GitLab by @cstender on Apr 2, 2020, 17:16

added 1 commit

  • e6d74be0 - package: fix build after renaming Doxyfile to Doxyfile.in

Compare with previous version

In GitLab by @cstender on Apr 2, 2020, 17:21

Bitte auch noch die README.md und die Dokumentation anpassen.

In GitLab by @cstender on Apr 3, 2020, 12:05

marked as a Work In Progress

In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 12:14

Commented on CMakeLists.txt line 91

Ich denke, es ist sauberer wenn wir das getrennt lassen. Dann sind auch die Tests im git CI getrennt und man sieht sofort, wo genau (also bei welchem target) der Test fehlgeschlagen ist, bspw. im build, test, doc usw.

In GitLab by @cstender on Apr 7, 2020, 12:32

Commented on CMakeLists.txt line 91

Ok

In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 13:31

Commented on .gitignore line 2

changed this line in version 7 of the diff

In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 13:31

added 3 commits

  • 6cfb63e7 - clean CMake file and remove not needed dirs for the doc package installation
  • f003f689 - updated README and ChangeLog
  • b2baf307 - added missing doxygen comment

Compare with previous version

In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 13:39

added 1 commit

  • ff360f4f - update documentation

Compare with previous version

In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 14:49

added 1 commit

  • 62f8bdac - removed japi_shutdown feature from doc

Compare with previous version

In GitLab by @fraunhofer-iis-anon on Apr 8, 2020, 11:23

unmarked as a Work In Progress

In GitLab by @cstender on Apr 8, 2020, 11:43

added 5 commits

  • 62f8bdac...29dd274b - 3 commits from branch dev
  • b53fac80 - Merge branch 'dev' into issue_14
  • c1ad8355 - CMakeList.txt removed whitespaces at EOL

Compare with previous version

In GitLab by @cstender on Apr 8, 2020, 11:44

resolved all threads

In GitLab by @cstender on Apr 8, 2020, 11:45

enabled an automatic merge when the pipeline for c1ad8355620da76f6fbe824f9c77f381c37ff2ae succeeds

In GitLab by @cstender on Apr 8, 2020, 11:45

merged

In GitLab by @cstender on Apr 8, 2020, 11:45

mentioned in commit 4ed0c7e