Surprising behavior with object libraries
This links all of a.cpp
, b.cpp
and c.cpp
into exec:
cmake_minimum_required(VERSION 3.12)
add_library(a STATIC a.cpp)
add_library(ai INTERFACE)
target_link_libraries(ai INTERFACE a)
add_library(b STATIC b.cpp)
add_library(bi INTERFACE)
target_link_libraries(bi INTERFACE b)
add_executable(exec c.cpp)
target_link_libraries(exec ai bi)
Now switching both libraries to OBJECT causes only c.cpp
to be linked, which is surprising.
cmake_minimum_required(VERSION 3.12)
add_library(a OBJECT a.cpp)
add_library(ai INTERFACE)
target_link_libraries(ai INTERFACE a)
add_library(b OBJECT b.cpp)
add_library(bi INTERFACE)
target_link_libraries(bi INTERFACE b)
add_executable(exec c.cpp)
target_link_libraries(exec ai bi)
Edited by Giovanni Funchal