Sök…


Syntax

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

körbara

För att skapa ett build-mål som producerar en körbar bör man använda kommandot add_executable :

add_executable(my_exe
               main.cpp
               utilities.cpp)

Detta skapar ett build-mål, t.ex. make my_exe för GNU- make my_exe , med lämpliga invokationer av den konfigurerade kompilatorn för att producera en körbar my_exe från de två källfilerna main.cpp och utilities.cpp .

Som standard läggs alla körbara mål till det inbyggda all målet ( all för GNU- BUILD_ALL , BUILD_ALL för MSVC).
För att utesluta en körbar från att byggas med standardmålet all , kan man lägga till den valfria parametern EXCLUDE_FROM_ALL direkt efter EXCLUDE_FROM_ALL :

add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)

bibliotek

För att skapa ett build-mål som skapar ett bibliotek använder add_library kommandot add_library :

add_library(my_lib lib.cpp)

CMake-variabeln BUILD_SHARED_LIBS styr när som BUILD_SHARED_LIBS att bygga ett statiskt ( OFF ) eller ett delat ( ON ) -bibliotek, med till exempel cmake .. -DBUILD_SHARED_LIBS=ON . Du kan dock uttryckligen ställa in att bygga ett delat eller ett statiskt bibliotek genom att lägga till STATIC eller SHARED efter SHARED :

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

Den faktiska utdatafilen skiljer sig mellan systemen. Till exempel kallas ett delat bibliotek på Unix-system vanligtvis libmy_shared_library.so , men på Windows skulle det vara my_shared_library.dll och my_shared_library.lib .

Liksom add_executable , lägg till EXCLUDE_FROM_ALL före listan med källfiler för att utesluta den från all mål:

add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)

Bibliotek som är utformade för att laddas vid körning (till exempel plugins eller applikationer som använder något som dlopen ) bör använda MODULE istället för SHARED / STATIC :

add_library(my_module_lib MODULE lib.cpp)

Till exempel på Windows finns det ingen importfil ( .lib ), eftersom symbolerna exporteras direkt i .dll .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow