Zacznijmy od podstawy, był sobie plik main.c do odczytu w terminalu, kiedy jego wielkość przekroczyła 1000 linii wywaliłem funkcje i main.c= main.c+funkcje.h+funkcje.c. wszystko fajnie w makefile
a.out: main.o funkcje.o
gcc main.o funkcje.o -lm

main.o: main.c funkcje.h
gcc -c main.c

funkcje.o: funkcje.c funkcje.h
gcc -c funkcje.c
W związku z tym, że w nowym menu.c zastępującym main.c dorobiłem przyciski i minimalny interface, main.o zmienia się na gcc gtk libs i flags menu.c. To też działa!
Od jakieś wersji openCV wymagana jest kompilacja przez cmake, bo inaczej nie zadziała, gdyż pozmieniali biblioteki i takie tam.
Tu się zaczynają schody, w związku z tym, że jeden temat na forum, to ten dotyczy make w logu. Normalnie mamy wcześniej trzy pliki w jednym folderze, cmake chce, aby oddzielić pliki do folderów, tak wynika z tutoriala CMake https://cmake.org/cmake-tutorial/" i jeszcze bardziej przerażającego tutoriala wiki https://cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file .
Ja nie chcę żadnej wersji major, minor, z tego nie wiem na co mi h.in. Jest to wersja jedyna, jak sobie zrobię wersję 2 to ctrl+c ctrl+v, kopia pierwszej. Zacznijmy krok po kroku, bo robienie CMakeList.txt w każdym folderze robiłem.
Załóżmy, że są dwa foldery mylib1 gdzie jest main.c i mylib2 z funkcje.c funkcje.h a nawet z funkcje.o, do tego gdzieś jest folder build. Wszystko znajduje się w folderze FOLDER. W FOLDER oznaczmy CMakeList.txt jako neon.txt, w mylib1 leon.txt, w mylib2 kameleon.txt, dla rozróżniania tych folderów, podkreślam, nie ma żadnych major minor wersji, jest wersja general.