Switched to Cmake - [merged]
fraunhofer-iis-bot opened this issue · 45 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
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
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: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
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
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
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 @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
In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 13:39
added 1 commit
- ff360f4f - update documentation
In GitLab by @fraunhofer-iis-anon on Apr 7, 2020, 14:49
added 1 commit
- 62f8bdac - removed japi_shutdown feature from doc
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
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