mirror of
https://github.com/Kitware/CMake.git
synced 2026-11-06 05:16:58 +00:00
Introduce new properties which allow target-specific wrapping of compile and link commands with arbitrary command lines. This is similar to the existing compiler and linker launchers, except the new `INTERFACE` compile and link wrappers allows expression as usage requirements. Wrappers are more flexible than launchers with regard to having multiple belonging to a given target, either from the target itself or dependent(s). In such cases, wrappers precede launchers on the resulting command line (so as to not interfere with tools like `ccache`), and are sorted lexicographically by the name of the corresponding CMake global property containing their value. Co-authored-by: Joseph Snyder <joseph.snyder@kitware.com> Issue: #27402, #28110 Fixes: #27598
16 lines
793 B
CMake
16 lines
793 B
CMake
include(common.cmake)
|
|
enable_language(C)
|
|
string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
|
|
string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
|
|
string(REPLACE "${CMAKE_START_TEMP_FILE}" "" CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_C_CREATE_STATIC_LIBRARY}")
|
|
string(REPLACE "${CMAKE_END_TEMP_FILE}" "" CMAKE_C_CREATE_STATIC_LIBRARY "${CMAKE_C_CREATE_STATIC_LIBRARY}")
|
|
|
|
# Static libraries are created by the archiver: compile wrappers apply, but
|
|
# link wrappers and linker launchers do not.
|
|
set(CMAKE_C_LINKER_LAUNCHER "${CMAKE_COMMAND};-E;env;LL_LAUNCH=1")
|
|
add_library(main STATIC main.c)
|
|
set_target_properties(main PROPERTIES
|
|
COMPILE_WRAPPERS "EXAMPLE_1;EXAMPLE_2"
|
|
LINK_WRAPPERS "EXAMPLE_1;EXAMPLE_2"
|
|
)
|