qt5base-lts/config.tests/static_link_order/CMakeLists.txt
Alexandru Croitor 0da123d67b CMake: Bump almost all cmake_minimum_required calls to 3.16
Needed for subsequent change that will check and error out if the
version is lower than 3.16. We do that to ensure all policies
introduced by CMake up to version 3.16 have their behavior set to
NEW.

Pick-to: 6.2
Task-number: QTBUG-95018
Change-Id: Ieaf82c10987dd797d86a3fd4a986a67e72de486a
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2021-09-22 19:36:49 +02:00

23 lines
881 B
CMake

# The test represents the order-related issue that we have with the ld linker.
#
# CMake versions < 3.21.0 produce the following linker line:
# <binary_name> main.cpp -o static_link_order_test libstaticLib.a objlib.cpp.o
# Since 'static_link_order_test' doesn't have direct use of 'staticlib2.cpp.o' symbols
# the translation unit is not linked. When we link objlib.cpp.o it cannot resolve symbols from
# staticlib2.cpp.o.
#
# For now it's only applicable for ld-like linkers. 'lld' has no such issue.
cmake_minimum_required(VERSION 3.16)
project(static_link_order_test LANGUAGES CXX)
add_library(objLib OBJECT objlib.cpp)
add_library(staticLib STATIC staticlib1.cpp staticlib2.cpp)
target_link_libraries(staticLib
INTERFACE objLib "$<TARGET_OBJECTS:objLib>"
)
add_executable(static_link_order_test main.cpp)
target_link_libraries(static_link_order_test PRIVATE staticLib)