Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Konfigurowanie projektu opartego na funkcji Make.
Zwyczaj
vcpkg_make_configure(
SOURCE_PATH <source-path>
[AUTORECONF]
[COPY_SOURCE]
[DISABLE_MSVC_WRAPPERS]
[DISABLE_CPPFLAGS]
[DISABLE_DEFAULT_OPTIONS]
[DISABLE_MSVC_TRANSFORMATIONS]
[OPTIONS <configure-setting>...]
[OPTIONS_RELEASE <configure-setting>...]
[OPTIONS_DEBUG <configure-setting>...]
[PRE_CONFIGURE_CMAKE_COMMANDS <cmake-command>...]
[LANGUAGES <language>...]
)
Aby użyć tej funkcji, musisz zależeć od portu pomocnika vcpkg-make
:
"dependencies": [
{
"name": "vcpkg-make",
"host": true
}
]
Parametry
SOURCE_PATH
Katalog zawierający pliki źródłowe projektu.
Ta wartość jest zwykle uzyskiwana w wyniku wywołania polecenia pozyskiwania źródła, takiego jak vcpkg_from_github()
.
AUTORECONF
Uruchamia autoreconf
po ustawieniu.
COPY_SOURCE
Jeśli zostanie określony, katalog źródłowy zostanie skopiowany do katalogu kompilacji przed rozpoczęciem procesu konfiguracji. Przydatne w przypadku projektów modyfikujących drzewo źródłowe podczas konfiguracji lub kompilacji.
DISABLE_MSVC_WRAPPERS
Domyślnie vcpkg_make_configure
dostarcza otoki, które tłumaczą i zmieniają kolejność flag "Unix / GCC" na flagi w stylu MSVC. Dotyczy to systemów kompilacji, które zakładają konwencje systemu Unix lub GCC.
Ustawienie DISABLE_MSVC_WRAPPERS
wyłącza tłumaczenie flag, umożliwiając narzędziom, takich jak cl
i windres
odbieranie flag wiersza polecenia bez modyfikacji.
DISABLE_MSVC_TRANSFORMATIONS
Domyślnie w przypadku używania MSVC
biblioteki i flagi są przekształcane zgodnie z konwencjami w stylu unix. Jest to niezbędne do zapewnienia zgodności z narzędziami kompilacji opartymi na systemie Unix, takimi jak libtool
, i dlatego, że MSVC
jest wywoływana za pośrednictwem otoek w środowiskach międzyplatformowych. Te otoki (takie jak skrypty ar-lib
i compile
) zapewniają, że MSVC
zachowuje się bardziej jak kompilator systemu Unix, upraszczając proces kompilacji i zapewniając jego zgodność z narzędziami skoncentrowanymi na systemie Unix.
Przekształcanie biblioteki:
- Biblioteki, takie jak
libexample.lib
, są przekształcane w flagi przyjazne dla konsolidatora, dodając prefiks-l
i usuwając rozszerzenie (np.libexample.lib
staje się-llibexample
).
Obsługa flag:
- Znaki ucieczki (takie jak
-Xcompiler
i-Xlinker
) są dodawane przed flagami kompilatora i konsolidatora (np.-O2
stają się-Xcompiler -O2
). Te znaki ucieczki zapewniają właściwą obsługę przez narzędzia, takie jaklibtool
, które w przeciwnym razie mogą błędnie interpretować flagi zawierające znaki specjalne lub spacje.
Po ustawieniu DISABLE_MSVC_TRANSFORMATIONS
domyślne przekształcenia są wyłączone, a biblioteki i flagi są przekazywane w ich oryginalnym formularzu do MSVC.
Przykład (zachowanie domyślne):
libexample.lib → -llibexample
-O2 → -Xcompiler -O2
Przykład (DISABLE_MSVC_TRANSFORMATIONS
):
libexample.lib → libexample.lib
-O2 → -O2
Nuta
Jeśli wyłączysz otoki MSVC przy użyciu DISABLE_MSVC_WRAPPERS
, ta opcja (DISABLE_MSVC_TRANSFORMATIONS
) nie ma efektu.
DISABLE_CPPFLAGS
Wyłącza wyodrębnianie flag preprocesora języka C (-D
i -isystem
) z CFLAGS
i CXXFLAGS
do CPPFLAGS
.
Domyślnie vcpkg_make_configure
wyodrębnia odpowiednie flagi preprocesora z CFLAGS
i CXXFLAGS
zmiennych środowiskowych do CPPFLAGS
, ponieważ flagi preprocesora w narzędziu vcpkg są zwykle dostarczane za pomocą zmiennych ustawień kompilatora, takich jak VCPKG_C_FLAGS
lub VCPKG_CXX_FLAGS
.
Ustawienie DISABLE_CPPFLAGS
wyłącza to zachowanie, pozostawiając wstępnie preprocesor odpowiednie flagi w CFLAGS
i CXXFLAGS
.
Może to być przydatne w przypadku projektów, które nie używają standardowych zmiennych środowiskowych lub mają określone wymagania preprocesora.
DISABLE_DEFAULT_OPTIONS
Ustawienie tej flagi powoduje wyłączenie następujących domyślnych opcji konfiguracji udostępnianych przez vcpkg_make_configure
. Użyj tej flagi tylko wtedy, gdy potrzebujesz pełnej kontroli nad konfigurowaniem wiersza polecenia i chcesz ręcznie określić wszystkie opcje.
Ustawienia domyślne ogólne:
- --disable-silent-rules — sprawia, że dane wyjściowe procesu kompilacji są bardziej pełne.
- --verbose — włącza pełne dane wyjściowe ze skryptu konfiguracji.
Łączenie biblioteki:
- W przypadku kompilacji biblioteki dynamicznej: --enable-shared i --disable-static
- W przypadku kompilacji biblioteki statycznej: --disable-shared i --enable-static
Katalogi instalacji:
Dostosowuje katalogi standardowe (bin, lib, share itp.), aby były zgodne z układem programu vcpkg.
Zawsze ustawiane:
-
--prefix
: podstawowy katalog instalacyjny dostosowany na typ kompilacji (wydanie lub debugowanie). -
--bindir
: podkatalog pod prefiksem dla programów wykonywalnych -
--sbindir
: Podkatalog pod prefiksem dla programów administracyjnych systemu -
--libdir
: Podkatalog pod prefiksem bibliotek (udostępnione lub statyczne) -
--mandir
: Podkatalog pod prefiksem stron ręcznych (pliki man) -
--docdir
: Podkatalog pod prefiksem dokumentacji -
--datarootdir
: Podkatalog pod prefiksem dla danych niezależnych od architektury
-
Tylko kompilacje debugowania:
-
--includedir
: Podkatalog pod prefiksem dla plików nagłówkowych
-
Przykładowe ścieżki:
Konfiguracja wydania:
--prefix=${current_installed_dir}
--bindir=${prefix}/tools/${PORT}/bin
--sbindir=${prefix}/tools/${PORT}/sbin
--libdir=${prefix}/lib
--mandir=${prefix}/share/${PORT}
--docdir=${prefix}/share/${PORT}
--datarootdir=${prefix}/share/${PORT}
Konfiguracja debugowania:
--prefix=${current_installed_dir}${path_suffix_DEBUG}
--bindir=${prefix}/../tools/${PORT}${path_suffix_DEBUG}/bin
--sbindir=${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin
--libdir=${prefix}/lib
--includedir=${prefix}/../include
--mandir=${prefix}/share/${PORT}
--docdir=${prefix}/share/${PORT}
--datarootdir=${prefix}/share/${PORT}
Platform-Specific poprawki:
W systemie Windows
- Ustawia
gl_cv_double_slash_root=yes
sygnał do skryptu konfiguracji, który jest uruchomiony w systemie Windows, gdzie ścieżki mogą zaczynać się podwójnymi ukośnikami (//). - Ustawia
ac_cv_func_memmove=yes
iac_cv_func_memset=yes
, aby wskazać, że funkcjememmove
imemset
są dostępne. - ustawia
gl_cv_host_cpu_c_abi=no
na kompilacjach ARM64, aby wskazać, że kompilator nie używa standardowego ABI dla liczb zmiennoprzecinkowych.
- Ustawia
W systemach przypominających system Unix:
- Dostosowuje ścieżki, aby pasować do typowej hierarchii systemu plików Unix (np. przy użyciu /usr/local).
Nuta
Te opcje domyślne usprawniają proces konfiguracji dla większości projektów. Jeśli potrzebujesz wysoce dostosowanej kompilacji, możesz ustawić DISABLE_DEFAULT_OPTIONS
i ręcznie podać wszystkie niezbędne opcje konfiguracji.
OPCJE
Dodatkowe opcje przekazywania do skryptu konfiguracji niezależnie od typu konfiguracji (debugowanie lub wydanie). Użyj tych elementów, aby określić dowolne niestandardowe flagi lub ustawienia wymagane przez projekt.
OPTIONS_RELEASE
Dodatkowe opcje przekazywania do skryptu konfiguracji tylko podczas kompilacji wydania. Użyj tych elementów, aby określić dowolne niestandardowe flagi lub ustawienia wymagane przez projekt.
Są one dodatkiem do OPTIONS
.
OPTIONS_DEBUG
Dodatkowe opcje przekazywania do skryptu konfiguracji tylko podczas kompilacji debugowania. Użyj tych elementów, aby określić dowolne niestandardowe flagi lub ustawienia wymagane przez projekt.
Są one dodatkiem do OPTIONS
.
PRE_CONFIGURE_CMAKE_COMMANDS
Określa listę poleceń narzędzia CMake do wykonania przed skonfigurowaniem procesu dla każdego typu kompilacji. Oznacza to, że jeśli VCPKG_BUILD_TYPE
jest pusta (wartość domyślna), te polecenia są uruchamiane raz na potrzeby debugowania i raz dla wydania. Jeśli VCPKG_BUILD_TYPE
jest release
, te polecenia są uruchamiane tylko raz w celu wydania. Może to służyć do konfigurowania środowiska lub przygotowywania kompilacji w sposób wymagany przez skrypt konfiguracji.
Nuta
Jeśli opcja COPY_SOURCE
nie jest ustawiona, polecenia narzędzia CMake w PRE_CONFIGURE_CMAKE_COMMANDS
działają bezpośrednio na plikach w oryginalnym katalogu źródłowym.
Przykład
function(my_preconfigure_command SRC BUILD_TYPE)
# Each source directory gets different version.txt files
if(BUILD_TYPE STREQUAL "release")
file(WRITE "${SRC}/version.txt" "This is a release version!")
else()
file(WRITE "${SRC}/version.txt" "This is a debug version!")
endif()
# The environment variable has different values for each configuration
set(ENV{SPECIAL} "${BUILD_TYPE} is magic")
endfunction()
vcpkg_make_configure(
# ...
PRE_CONFIGURE_CMAKE_COMMANDS my_preconfigure_command
)
W tym przykładzie my_preconfigure_command
są wykonywane dwa razy (w przypadku opcji "Debugowanie" i "Wydanie", jeśli VCPKG_BUILD_TYPE
nie jest ustawiona):
Kompilacja debugowania: tworzy version.txt
z zawartością "To jest wersja debugowania!" i ustawia zmienną środowiskową SPECIAL
na "Debugowanie jest magiczne".
Kompilacja wydania: tworzy version.txt
z zawartością "To jest wersja wydania!" i ustawia zmienną środowiskową SPECIAL
na "Release is magic".
JĘZYKI
Argument LANGUAGES
określa języki programowania, które mają być brane pod uwagę podczas procesu konfiguracji i kompilacji.
Prawidłowe wartości to C
, CXX
, ASM
, CUDA
, Fortran
, HIP
, ISPC
, Swift
, OBJC
, OBJCXX
.
Dołącza określone języki do VCPKG_CMAKE_CONFIGURE_OPTIONS
jako -DVCPKG_LANGUAGES=<languages>
.
vcpkg_cmake_get_vars
używa opcji przechowywanych w VCPKG_CMAKE_CONFIGURE_OPTIONS
, w tym argumentu LANGUAGES
, do konfigurowania fikcyjnego projektu CMake i wyodrębniania niezbędnych zmiennych CMake. Argument LANGUAGES
wpływa na konfigurację fikcyjnego projektu CMake używanego w vcpkg_cmake_get_vars
.
Konfiguracja wyodrębnia odpowiednie zmienne CMake dla określonych języków i ponownie eksportuje je jako VCPKG_DETECTED_CMAKE_*
.
Widzieć
vcpkg_make_configure(
SOURCE_PATH "/path/to/source"
LANGUAGES "C" "CXX" "Fortran"
)
Przykłady
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO example/examplelib
REF v1.2.3
SHA512 123456...
)
vcpkg_make_configure(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
--disable-silent-rules
--enable-foo
OPTIONS_DEBUG
--enable-debug-logs
)
vcpkg_make_install()
Uwagi
To polecenie zastępuje vcpkg_configure_make()
.