Поиск…


Синтаксис

  • add_executable (target_name [EXCLUDE_FROM_ALL] source1 [источник2 ...])
  • add_library (lib_name [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [источник2 ...])

исполняемые

Чтобы создать цель сборки, производящую исполняемый файл, следует использовать команду add_executable :

add_executable(my_exe
               main.cpp
               utilities.cpp)

Это создает цель сборки, например make my_exe для GNU make, с соответствующими my_exe сконфигурированного компилятора для создания исполняемого файла my_exe из двух исходных файлов main.cpp и utilities.cpp .

По умолчанию, все исполняемые цели добавляются к встроено all целям ( all для GNU сделать, BUILD_ALL для MSVC).
Чтобы исключить возможность создания исполняемого файла с помощью all цели по умолчанию, можно добавить необязательный параметр EXCLUDE_FROM_ALL сразу после целевого имени:

add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)

Библиотеки

Чтобы создать цель сборки, которая создает библиотеку, используйте команду add_library :

add_library(my_lib lib.cpp)

Переменная CMake BUILD_SHARED_LIBS управляет всякий раз, когда создается статическая ( OFF ) или общая ( ON ) библиотека, используя, например, cmake .. -DBUILD_SHARED_LIBS=ON . Однако вы можете явно настроить создание общей или статической библиотеки, добавив STATIC или 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

Фактический выходной файл отличается между системами. Например, разделяемая библиотека в системах Unix обычно называется libmy_shared_library.so , но в Windows это будет my_shared_library.dll и my_shared_library.lib .

Как add_executable , добавить EXCLUDE_FROM_ALL перед списком исходных файлов , чтобы исключить его из all цели:

add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)

Библиотеки, предназначенные для загрузки во время выполнения (например, плагины или приложения, использующие что-то вроде dlopen ), должны использовать MODULE вместо SHARED / STATIC :

add_library(my_module_lib MODULE lib.cpp)

Например, в Windows не будет файла импорта ( .lib ), потому что символы экспортируются непосредственно в .dll .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow