You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
1.0 KiB

cmake_minimum_required(VERSION 3.24)
project(SwiftMixLib C CXX Swift)
# Swift on Windows only provides a release runtime.
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDLL)
add_library(SwiftMixedLib lib.c lib.cpp lib.swift)
add_executable(Swifty main.swift)
target_link_libraries(Swifty PUBLIC SwiftMixedLib)
add_executable(c_main main.c)
target_link_libraries(c_main PUBLIC SwiftMixedLib)
if(WIN32)
# TODO: On macOS and Linux, Swift has mechanism for determining what libraries
# an object, or objects from a static archive, need to link against,
# which is how the Swift driver is able to determine that `c_main`
# needs to link swiftCore. Windows does not have this mechanism.
# Eventually CMake should learn how to do this, explicitly forwarding
# the required library to the link command when linking a static
# archive containing Swift sources into something else, even if the
# linker language is Swift.
target_link_libraries(c_main PRIVATE swiftCore)
endif()