Mam dwa projekty, z których oba używają CMake. Teraz chcę włączyć jeden z projektów jako bibliotekę do drugiego, zachowując jednocześnie możliwość kompilowania ich jako samodzielne projekty.Osadzanie jednego projektu cmake w innym?
Do tej pory zrobiłem: Użyj systemu kontroli wersji, aby sklonować kopię projektu podrzędnego w podkatalogu projektu nadrzędnego. Użyłem "add_subdirectory", aby dołączyć CMakeLists.txt projektu podrzędnego do projektu nadrzędnego. Naprawiono też kolizje nazw między celami, zmieniając nazwy niektórych obiektów docelowych w projekcie podrzędnym.
Jednak problem, na który napotykam, polega na tym, że różne testy konfiguracji w projekcie potomnym nie działają. Na przykład projekt potomny korzysta z modułu FindThreads w celu określenia, które prymitywy synchronizacji są dostępne. Projekt macierzysty nie jest świadomy problemów z wątkami i dlatego nie ma żadnych testów związanych z tym zagadnieniem. Podobnie projekt potomny ma różne testy dla nagłówków i takie, które nie są potrzebne w projekcie nadrzędnym. Wydaje się, że żaden z tych testów nie działa, a symbole zdefiniowane w tych testach nie są dodawane do pliku CMakeCache.txt.
Naprawdę nie chcę, aby wszystkie testy z projektu podrzędnego (które dotyczą głównie problemów związanych z platformą, które nie są istotne dla rodzica) zostały przeprowadzone w pliku CMakeLists.txt nadrzędnego projektu.
Dzięki, ostatnio współpracuję z projektami zewnętrznymi i robią, co chcę. Ponieważ używam podprojektów git, muszę powiedzieć ExternalProject_Add, aby nie pobierał ani nie instalował zewnętrznego projektu - można to zrobić, ustawiając polecenia pobierania i instalacji na "" (pusty ciąg znaków). – Talin