/ / vrátane makefile pri používaní

vrátane makefile pri použití

Potrebujem pomoc s používaním makefilu tretej strany pri zostavovaní môjho vlastného projektu.

odpovede:

1 pre odpoveď č. 1

Neexistuje priamy spôsob, ako chcete. CMake neposkytuje možnosť zahrnúť súbory do svojich vygenerovaných súborov. (tj: zahrnúť „3rdparty.mk"na vygenerovaný CMake Makefile.) Do „a“ nemôžete priamo zahrnúť „typ vygenerovaného súboru“ (tj: Makefile) CMakeLists.txt, Cmake "s ExternalProject buď to neurobíš.

Čo musíte urobiť, je nejako "analyzovať"makefile, ktorý obsahuje požadované informácie. Existuje nespočetné množstvo spôsobov, ako to urobiť. Napríklad by ste mohli napísať obal skriptu shellu, ktorý by skreslil váš makefile za to, čo potrebujete, potom skonštruujte príkazový riadok CMake s premennými, ktoré chcete definovať, a vydajte ho alebo zavolajte. cmake pre teba. V závislosti od toho, ako ste s shellom spokojní (alebo perl, python atď.), Môžete mať pocit, že je to najlepšia voľba.

Ak viete, že sa tieto hodnoty nikdy (alebo veľmi zriedka nezmenia), môžete ich pevne zakódovať do svojho CMakeLists.txt (neodporúča sa) alebo do súboru, ktorý môžete include() (Lepšia).

Môžete tiež zostať v CMake-land a používať CMake's ExternalProject pomôcť ti. Pomocou programu ExternalProject môžete:

  1. Načítať knižnice tretích strán (sťahovať, kopírovať, rozbaľovať atď.)
  2. Oprava makefilov týchto knižníc
  3. beh make na týchto opravených makefiloch

Teraz je táto oprava, ktorú som spomínal, niečo, čo by ste si mali napísať sami, a držte sa zdroja pôvodného projektu. Obsah tejto opravy by bol novým cieľom pre vytvorenie toho, čo by napíš súbor, ktorý by si mohol vložiť do CMakeLists.txt via include(), Mohli by ste začať jednoducho a mať tento nový cieľový cieľ (napr .: make output_variables) napíšte zoznam set() príkazy na lib_A.cmake, Potom, čo vám to vyhovuje, môžete prejsť na zložitejší výstup; ako písanie a lib_A-config.cmake súbor, ktorý CMake je find_package() pochopiť.

Je pravda, že posledná možnosť je pravdepodobne najzložitejšia, ale môže vám uľahčiť údržbu vášho primárneho projektu a v budúcnosti znížiť bolesti. Získate tiež hlbšie pochopenie CMake.