Udostępnij za pośrednictwem


vcpkg_make_configure

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 MSVCbiblioteki 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 jak libtool, 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 i ac_cv_func_memset=yes, aby wskazać, że funkcje memmove i memset 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.
  • 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().