Installing Targets¶

install(TARGETS targets... ] ] ] )

Formuläret TARGETS specificerar regler för installation av mål från ett projekt. Det finns fem typer av målfiler som kan installeras: ARCHIVE, LIBRARY, RUNTIME, FRAMEWORK och BUNDLE.Exekverbara filer behandlas som RUNTIME-mål, förutom att de som är markerade med egenskapen MACOSX_BUNDLE behandlas som BUNDLE-mål på OS X. Statiska bibliotek behandlas som ARCHIVE-mål, förutom att de som markerats med egenskapen FRAMEWORK behandlas som FRAMEWORK-mål på OS X. Modulbibliotek behandlas alltid som LIBRARY-mål.För icke-DLL-plattformar behandlas delade bibliotek som LIBRARY-mål, förutom att de som markerats med egenskapen FRAMEWORK behandlas som FRAMEWORK-mål på OS X. För DLL-plattformar behandlas DLL-delen av ett delat bibliotek som ett RUNTIME-mål och motsvarande importbibliotek behandlas som ett ARCHIVE-mål.Alla Windows-baserade system, inklusive Cygwin, är DLL-plattformar.Argumenten ARCHIVE, LIBRARY, RUNTIME och FRAMEWORK ändrar vilken typ av mål som de efterföljande egenskaperna gäller.Om inget anges gäller installationsegenskaperna för alla måltyper. Om endast ett anges kommer endast mål av den typen att installeras (vilket kan användas för att installera endast en DLL eller endast ett importbibliotek).

Argumenten PRIVATE_HEADER, PUBLIC_HEADER och RESOURCE gör att efterföljande egenskaper tillämpas vid installation av ett FRAMEWORKdelat biblioteksmåls associerade filer på icke-Apple-plattformar. Regler som definieras av dessa argument ignoreras på Apple-plattformar eftersom de associerade filerna installeras på lämpliga platser i rammappen. Se dokumentationen förPRIVATE_HEADER, PUBLIC_HEADER ochRESOURCE målegenskaperna för mer information.

Endera NAMELINK_ONLY eller NAMELINK_SKIP kan anges som ettLIBRARY alternativ. På vissa plattformar har ett versionerat delat bibliotek en symbolisk länk som:

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

där lib<name>.so.1 är bibliotekets soname och lib<name>.soär en ”namelink” som gör det möjligt för länkarna att hitta biblioteket när de får-l<name>. Alternativet NAMELINK_ONLY orsakar installation av endast thenamelink när ett biblioteksmål installeras. Alternativet NAMELINK_SKIP orsakar installation av andra biblioteksfiler än namelink när ett biblioteksmål installeras. När inget av alternativen anges installeras båda delarna. På plattformar där versionerade delade bibliotek inte har namelinks eller när ett bibliotek inte är versionerat installerar NAMELINK_SKIP-alternativet biblioteket och NAMELINK_ONLY-alternativet installerar ingenting. Se VERSION ochSOVERSION target-egenskaperna för mer information om hur man skapar versionerade delade bibliotek.

Den INCLUDES DESTINATION specificerar en lista med kataloger som kommer att läggas till INTERFACE_INCLUDE_DIRECTORIEStarget-egenskapen för <targets> när den exporteras med kommandotinstall(EXPORT). Om en relativ sökväg anges behandlas den som relativ till $<INSTALL_PREFIX>.Detta är oberoende av resten av argumentgrupperna och installerar faktiskt ingenting.

En eller flera grupper av egenskaper kan specificeras i ett enda anrop till TARGETS-formen av detta kommando. Ett mål kan installeras mer än en gång på olika platser. Tänk på de hypotetiska målen myExe,mySharedLib och myStaticLib. Koden:

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

kommer att installera myExe till <prefix>/bin och myStaticLib till<prefix>/lib/static. På icke-DLL-plattformar installeras mySharedLib till <prefix>/lib och /some/full/path. På DLL-plattformar installeras mySharedLib DLL på <prefix>/bin och /some/full/path och dess importbibliotek installeras på <prefix>/lib/static och /some/full/path.

Valet EXPORT associerar de installerade målfilerna med en export kallad <export-name>. Det måste förekomma före alla alternativ RUNTIME,LIBRARY eller ARCHIVE. För att faktiskt installera själva exportfilen, anropar du install(EXPORT), dokumenterat nedan.

Installation av ett mål med egenskapen EXCLUDE_FROM_ALL target som är satt till TRUE har odefinierat beteende.

Den installationsdestination som ges till målinstallationen DESTINATION kan använda ”generatoruttryck” med syntaxen $<...>. Se cmake-generator-expressions(7) manualen för tillgängliga uttryck.

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg