Installing Targets¶

install(TARGETS targets... ] ] ] )

Den TARGETS formular angiver regler for installation af mål fra et projekt. Der er fem typer målfiler, der kan installeres: ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK og BUNDLE. eksekverbare filer behandles som RUNTIME-mål, bortset fra at dem, der er markeret med MACOSX_BUNDLE-egenskaben, behandles som BUNDLE-mål på OS X. Statiske biblioteker behandles som ARCHIVE-mål, bortset fra at dem, der er markeret med FRAMEWORK-egenskaben, behandles som FRAMEWORK-mål på OS X. Modulbiblioteker behandles altid som LIBRARY-mål. for ikke-DLL-platforme behandles delte biblioteker som LIBRARY-mål, bortset fra at dem, der er markeret med FRAMEWORK-egenskaben, behandles som FRAMEWORK-mål på OS X. For DLL-platforme behandles DLL-delen af et delt bibliotek som et RUNTIME-mål, og det tilsvarende importbibliotek behandles som et ARCHIVE-mål.Alle Windows-baserede systemer, herunder Cygwin, er DLL-platforme.ARCHIVE-, LIBRARY-, RUNTIME– og FRAMEWORK-argumenterne ændrer den type mål, som de efterfølgende egenskaber gælder for.Hvis ingen er angivet, gælder installationsegenskaberne for alle måltyper. Hvis der kun angives et, vil kun mål af denne type blive installeret (hvilket kan bruges til kun at installere en DLL eller kun et importbibliotek).

Argumenterne PRIVATE_HEADER, PUBLIC_HEADER og RESOURCE medfører, at de efterfølgende egenskaber anvendes ved installation af et FRAMEWORKdelt biblioteksmåls tilknyttede filer på ikke-Apple-platforme. Regler, der er defineret af disse argumenter, ignoreres på Apple-platforme, fordi de tilknyttede filer installeres på de relevante steder i rammemappen. Se dokumentationen afPRIVATE_HEADER, PUBLIC_HEADER ogRESOURCE målegenskaberne for nærmere oplysninger.

Enten NAMELINK_ONLY eller NAMELINK_SKIP kan angives som enLIBRARY indstilling. På nogle platforme har et versioneret delt bibliotek et symbolsk link som:

lib<name>.so -> lib<name>.so.1

hvor lib<name>.so.1 er bibliotekets sonavn og lib<name>.so er et “namelink”, der gør det muligt for linkere at finde biblioteket, når der gives-l<name>. Indstillingen NAMELINK_ONLY medfører kun installation af thenamelink, når et biblioteksmål er installeret. Indstillingen NAMELINK_SKIP medfører installation af andre biblioteksfiler end namelinket, når der installeres et alibrary-mål. Når ingen af mulighederne er angivet, installeres begge dele. På platforme, hvor versionerede delte biblioteker ikke har namelinks, eller når et bibliotek ikke er versioneret, installerer NAMELINK_SKIP-indstillingen biblioteket, og NAMELINK_ONLY-indstillingen installerer intet. Se VERSION ogSOVERSION target-egenskaberne for oplysninger om oprettelse af versionerede delte biblioteker.

Den INCLUDES DESTINATION angiver en liste over mapper, som vil blive tilføjet til INTERFACE_INCLUDE_DIRECTORIEStarget-egenskaben for <targets>, når den eksporteres med kommandoeninstall(EXPORT). Hvis der angives en relativ sti, behandles den som relativ til $<INSTALL_PREFIX>.Dette er uafhængigt af resten af argumentgrupperne og installerer faktisk ikke noget.

En eller flere grupper af egenskaber kan angives i et enkelt kald til TARGETS-formen af denne kommando. Et mål kan installeres mere end én gang på forskellige steder. Tag de hypotetiske mål myExe,mySharedLib og myStaticLib. Koden:

install(TARGETS myExe mySharedLib myStaticLib RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/static)install(TARGETS mySharedLib DESTINATION /some/full/path)

vil installere myExe til <prefix>/bin og myStaticLib til<prefix>/lib/static. På ikke-DLL-platforme vil mySharedLib blive installeret til <prefix>/lib og /some/full/path. På DLL-platforme vil mySharedLib DLL’en blive installeret på <prefix>/bin og /some/full/path og dens importbibliotek vil blive installeret på <prefix>/lib/static og /some/full/path.

Optionen EXPORT knytter de installerede målfiler til en eksport kaldet <export-name>. Den skal forekomme før enhver RUNTIME,LIBRARY eller ARCHIVE indstilling. For faktisk at installere selve eksportfilen skal du kalde install(EXPORT), som er dokumenteret nedenfor.

Installation af et mål med EXCLUDE_FROM_ALL-måleegenskaben sat til TRUE har udefineret adfærd.

Den installationsdestination, der er givet til målinstallationen DESTINATION, kan bruge “generatorudtryk” med syntaksen $<...>. Se manualen cmake-generator-expressions(7) for tilgængelige udtryk.

admin

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

lg