<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace">This CMake wiki page (<a href="http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library" target="_blank">http://www.cmake.org/Wiki/CMake/Tutorials/Object_Library</a>) claims one can create a library from subdirectories containing libraries, which is exactly what I want to do.  However, it doesn't seem to work.  Here's my SSCCE (<a href="http://sscce.org" target="_blank">http://sscce.org</a>) "toy" example file structure:<br></div><div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace"><div class="gmail_default">.</div><div class="gmail_default">|-- CMakeLists.txt</div><div class="gmail_default">|-- component1/</div><div class="gmail_default">|   |-- CMakeLists.txt</div><div class="gmail_default">|   `-- c1.c</div><div class="gmail_default">|-- component2/</div><div class="gmail_default">|   |-- CMakeLists.txt</div><div class="gmail_default">|   `-- c2.c</div><div class="gmail_default">`-- dummy.c</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">## Here's the top level CMakeLists.txt, per example from Wiki:</div><div class="gmail_default"><br></div><div class="gmail_default"><div class="gmail_default">cmake_minimum_required(VERSION 2.8.4)</div><div class="gmail_default">project(lib)</div><div class="gmail_default">add_subdirectory(component1)</div><div class="gmail_default">add_subdirectory(component2)</div><div class="gmail_default">add_library(lib dummy.c)</div><div class="gmail_default">target_link_libraries(lib    component1 component2)</div><div class="gmail_default"><br></div><div class="gmail_default">## The subdirectory CMakeLists.txt files contain effectively just:</div><div class="gmail_default">add_library(component1  STATIC  c1.c) <br></div><div class="gmail_default">## and </div><div class="gmail_default">add_library(component2  STATIC  c2.c)<br></div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">## The resulting library file liblib.a contains only the dummy placeholder, but none of the subdirectory content:</div><div class="gmail_default"><br></div><div class="gmail_default"><div class="gmail_default">lib$ ar tv liblib.a</div><div class="gmail_default"><br></div><div class="gmail_default">rw-r--r--     502/20          696 Nov 25 18:23 2014 dummy.c.o<br></div><div class="gmail_default"><br></div><div class="gmail_default"><br></div></div><div class="gmail_default">## Is there some way to make this work?  </div><div class="gmail_default"><br></div><div class="gmail_default">* Ideally, I would not even need the dummy.c placeholder, but I can live with that.  </div><div class="gmail_default"><br></div><div class="gmail_default">* I do not want to list all of the source files in the top level CMakeLists.txt file.</div><div class="gmail_default"><br></div><div class="gmail_default">* I do not want to use the add_library(component1 OBJECT ${component1_sources}) and add_library(toplevel $<TARGET_OBJECTS:component1> ... ) syntax if it can be avoided.</div><div class="gmail_default"><br></div><div class="gmail_default"><br></div><div class="gmail_default">The reasons for my limitations is that to the greatest extent possible, I am generating CMakeLists.txt files via automation which needs to use a sort of a least-common-denominator approach to building those files.</div><div class="gmail_default"><br></div><div class="gmail_default">..chris</div></div></div></div>