mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
CMake: Force vcpkg to use CMAKE_CXX_COMPILER as specified to CMake
Override the vcpkg/scripts/detect_compiler behavior of always pulling
$CC and $CXX at the time that vcpkg install is determined to need called
by forcing $ENV{CXX} and $ENV{CC} to our CMake-determined compiler.
This prevents strange behavior such as running the following:
./Meta/ladybird.sh run
make changes...
ninja -C Build/ladybird
Where the second build step would be run without CC or CXX set in the
environment, causing a total cache miss from vcpkg and a full rebuild.
It also helps prevent full rebuilds when an IDE passes a slightly
different compiler to the build step than ladybird.sh.
This commit is contained in:
committed by
Andreas Kling
parent
1e4720700c
commit
8e5d28de3c
@@ -7,6 +7,11 @@ if (VCPKG_TARGET_ANDROID)
|
||||
include("Ladybird/Android/vcpkg_android.cmake")
|
||||
endif()
|
||||
|
||||
# Pass additional information to vcpkg toolchain files if we are using vcpkg.
|
||||
if (CMAKE_TOOLCHAIN_FILE MATCHES "vcpkg.cmake$")
|
||||
set(CMAKE_PROJECT_ladybird_INCLUDE_BEFORE "Meta/CMake/vcpkg/generate_vcpkg_toolchain_variables.cmake")
|
||||
endif()
|
||||
|
||||
project(ladybird
|
||||
VERSION 0.1.0
|
||||
LANGUAGES C CXX
|
||||
|
||||
@@ -2,4 +2,4 @@ set(VCPKG_CMAKE_SYSTEM_NAME Linux)
|
||||
set(VCPKG_TARGET_ARCHITECTURE arm64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../user-variables.cmake OPTIONAL)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/base.cmake)
|
||||
|
||||
@@ -3,4 +3,4 @@ set(VCPKG_TARGET_ARCHITECTURE arm64)
|
||||
set(VCPKG_OSX_ARCHITECTURES arm64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../user-variables.cmake OPTIONAL)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/base.cmake)
|
||||
|
||||
2
Meta/CMake/vcpkg/base-triplets/base.cmake
Normal file
2
Meta/CMake/vcpkg/base-triplets/base.cmake
Normal file
@@ -0,0 +1,2 @@
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../user-variables.cmake OPTIONAL)
|
||||
include(${_VCPKG_INSTALLED_DIR}/../build-vcpkg-variables.cmake OPTIONAL)
|
||||
@@ -2,4 +2,4 @@ set(VCPKG_CMAKE_SYSTEM_NAME Linux)
|
||||
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../user-variables.cmake OPTIONAL)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/base.cmake)
|
||||
|
||||
@@ -3,4 +3,4 @@ set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||
set(VCPKG_OSX_ARCHITECTURES x86_64)
|
||||
set(VCPKG_CRT_LINKAGE dynamic)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../user-variables.cmake OPTIONAL)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/base.cmake)
|
||||
|
||||
11
Meta/CMake/vcpkg/generate_vcpkg_toolchain_variables.cmake
Normal file
11
Meta/CMake/vcpkg/generate_vcpkg_toolchain_variables.cmake
Normal file
@@ -0,0 +1,11 @@
|
||||
# The generated file here is read by vcpkg/base-triplets/base.cmake to ensure consistency between the project
|
||||
# build and the vcpkg build.
|
||||
set(EXTRA_VCPKG_VARIABLES "")
|
||||
if (NOT "${CMAKE_C_COMPILER}" STREQUAL "")
|
||||
string(APPEND EXTRA_VCPKG_VARIABLES "set(ENV{CC} ${CMAKE_C_COMPILER})\n")
|
||||
endif()
|
||||
if (NOT "${CMAKE_CXX_COMPILER}" STREQUAL "")
|
||||
string(APPEND EXTRA_VCPKG_VARIABLES "set(ENV{CXX} ${CMAKE_CXX_COMPILER})\n")
|
||||
endif()
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/build-vcpkg-variables.cmake" "${EXTRA_VCPKG_VARIABLES}")
|
||||
Reference in New Issue
Block a user