I have a project where the output is a static library. The directory
structure is as follows:

myproj
   |  CMakeLists.txt
   |- cmake_macros
   |    find_include_dirs.cmake
   |- libs
   |--- Mac
   |----- lib
   |         libcrypto.a
   |         ...
   |--- win
   | ...
   |
   |- src
   |--- component1
   |       CMakeLists.txt
   |       some_file.c
   |       ...
   |----- include
   |       CMakeLists.txt
   |       some_file.h
   |       ...
   |--- component2
   | ...

Each component's cmake file describes the sources and headers for that
component:

project(component1)
set(component1_SOURCES
    ${CMAKE_CURRENT_SOURCE_DIR}/some_file.c
    ${CMAKE_CURRENT_SOURCE_DIR}/some_other_file.c
)
set(component1_HEADERS
    ${CMAKE_CURRENT_SOURCE_DIR}/include/some_file.h
    ${CMAKE_CURRENT_SOURCE_DIR}/include/some_other_file.h
)
add_library(component1 OBJECT ${component1_SOURCES} ${component1_HEADERS})

The top-level cmake file includes each sub-component and builds the
required library:

cmake_minimum_required (VERSION 2.8)
include(cmake_macros/find_include_dirs.cmake)

project (myProject C)

# find all include directories
find_include_dirs(INCLUDE_DIRS)
include_directories(${INCLUDE_DIRS})

# add subdirectories
add_subdirectory(src/component1)
add_subdirectory(src/component2)
...

# platform-specific compiler flags
if (APPLE)
    set(ENV{CC} clang)
    set(CMAKE_C_FLAGS "-std=gnu99" CACHE STRING "" FORCE)
    set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--export-all-symbols")
   ...
endif (APPLE)

add_library(myLib STATIC
    $<TARGET_OBJECTS:component1>
    $<TARGET_OBJECTS:component2>
    ...
)

When run without a generator, the command-line compilation works, producing
myLib.a; however, when I generate an Xcode project, I get multiple .a
files, one-per component and no target that links everything together into
a single library.

Any help would be greatly appreciated,
---
Mike Norman
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to