Zoeken…


Syntaxis

  • add_executable (target_name [EXCLUDE_FROM_ALL] source1 [source2 ...])
  • add_library (lib_name [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])

uitvoerbare

Om een build-doel te maken dat een uitvoerbaar bestand produceert, moet men de opdracht add_executable gebruiken:

add_executable(my_exe
               main.cpp
               utilities.cpp)

Hiermee wordt een make my_exe , bijvoorbeeld make my_exe voor GNU make, met de juiste aanroepen van de geconfigureerde compiler om een uitvoerbaar my_exe te produceren uit de twee bronbestanden main.cpp en utilities.cpp .

Standaard worden alle uitvoerbare doelen toegevoegd aan het ingebouwde all doel ( all voor GNU make, BUILD_ALL voor MSVC).
Om een uitvoerbaar bestand uit te sluiten van het standaarddoel all , kan men de optionele parameter EXCLUDE_FROM_ALL direct achter de EXCLUDE_FROM_ALL toevoegen:

add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)

bibliotheken

Gebruik de opdracht add_library om een build-doel te maken dat een bibliotheek maakt:

add_library(my_lib lib.cpp)

De BUILD_SHARED_LIBS variabele BUILD_SHARED_LIBS regelt wanneer een statische ( OFF ) of een gedeelde ( ON ) bibliotheek wordt gebouwd, bijvoorbeeld cmake .. -DBUILD_SHARED_LIBS=ON . U kunt echter expliciet instellen om een gedeelde of statische bibliotheek te bouwen door STATIC of SHARED toe te voegen na de doelnaam:

add_library(my_shared_lib SHARED lib.cpp) # Builds an shared library
add_library(my_static_lib STATIC lib.cpp) # Builds an static library

Het werkelijke uitvoerbestand verschilt tussen systemen. Een gedeelde bibliotheek op Unix-systemen wordt bijvoorbeeld meestal libmy_shared_library.so , maar in Windows zou dit my_shared_library.dll en my_shared_library.lib .

Voeg EXCLUDE_FROM_ALL als add_executable toe vóór de lijst met bronbestanden om het van het doel all uit te sluiten:

add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)

Bibliotheken, die zijn ontworpen om tijdens runtime te worden geladen (bijvoorbeeld plug-ins of applicaties die zoiets als dlopen ), moeten MODULE plaats van SHARED / STATIC :

add_library(my_module_lib MODULE lib.cpp)

Op Windows zal er bijvoorbeeld geen importbestand ( .lib ) zijn, omdat de symbolen rechtstreeks in de .dll worden geëxporteerd.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow