Document that CMAKE_POSITION_INDEPENDENT_CODE is ignored for shared lib
I try to understand why CMAKE_POSITION_INDEPENDENT_CODE don't seem to be used to initialized POSITION_INDEPENDENT_CODE in case of a shared lib target.
cmake_minimum_required (VERSION 3.20)
project (ETS)
set(CMAKE_POSITION_INDEPENDENT_CODE False)
add_library(lib1 SHARED)
get_target_property(posLib1 lib1 POSITION_INDEPENDENT_CODE)
message("POSITION_INDEPENDENT_CODE for lib1 SHARED : ${posLib1}")
add_library(lib2 STATIC)
get_target_property(posLib2 lib2 POSITION_INDEPENDENT_CODE)
message("POSITION_INDEPENDENT_CODE for lib2 STATIC : ${posLib2}")
add_executable(exec1)
get_target_property(posExec1 exec1 POSITION_INDEPENDENT_CODE)
message("POSITION_INDEPENDENT_CODE for exec1 : ${posExec1}")
The result:
POSITION_INDEPENDENT_CODE for lib1 SHARED : True
POSITION_INDEPENDENT_CODE for lib2 STATIC : False
POSITION_INDEPENDENT_CODE for exec1 : False
If it's the correct behavior maybe an update of the documentation to make it more clear. https://cmake.org/cmake/help/v3.20/prop_tgt/POSITION_INDEPENDENT_CODE.html
The correct way to generate an position dependent code shared lib is it to force the properties POSITION_INDEPENDENT_CODE to the target to false after his creation?
Edited by Brad King