diff --git a/.cproject b/.cproject
index 17b162e72..4e91622c1 100644
--- a/.cproject
+++ b/.cproject
@@ -1770,6 +1770,14 @@
false
true
+
+ make
+ -j2
+ gtsam-static
+ true
+ true
+ true
+
make
-j2
diff --git a/gtsam/3rdparty/CMakeLists.txt b/gtsam/3rdparty/CMakeLists.txt
index 4e6cefb47..45118d7b8 100644
--- a/gtsam/3rdparty/CMakeLists.txt
+++ b/gtsam/3rdparty/CMakeLists.txt
@@ -16,10 +16,9 @@ foreach(eigen_dir ${eigen_dir_headers_all})
endif()
endforeach(eigen_dir)
-# build convenience library
-set (ccolamd_srcs
- CCOLAMD/Source/ccolamd.c
- CCOLAMD/Source/ccolamd_global.c
- UFconfig/UFconfig.c)
-
-add_library(ccolamd STATIC ${ccolamd_srcs})
\ No newline at end of file
+## build convenience library
+#set (3rdparty_srcs
+# CCOLAMD/Source/ccolamd.c
+# CCOLAMD/Source/ccolamd_global.c
+# UFconfig/UFconfig.c)
+#add_library(ccolamd STATIC ${3rdparty_srcs})
\ No newline at end of file
diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt
index 41f8f3d33..c696ed751 100644
--- a/gtsam/CMakeLists.txt
+++ b/gtsam/CMakeLists.txt
@@ -1,88 +1,69 @@
# Build full gtsam library as a single library
# and also build tests
set (gtsam_subdirs
- 3rdparty
base
geometry
inference
linear
nonlinear
slam
- )
+)
+set(gtsam_srcs)
+
+# Build 3rdparty separately
+message(STATUS "Building 3rdparty")
+add_subdirectory(3rdparty)
+
+# build convenience library
+set (3rdparty_srcs
+ 3rdparty/CCOLAMD/Source/ccolamd.c
+ 3rdparty/CCOLAMD/Source/ccolamd_global.c
+ 3rdparty/UFconfig/UFconfig.c)
+add_library(ccolamd STATIC ${3rdparty_srcs})
+
+# assemble core libaries
foreach(subdir ${gtsam_subdirs})
+ # Build convenience libraries
+ file(GLOB subdir_srcs "${subdir}/*.cpp")
+ add_library(${subdir} STATIC ${subdir_srcs})
+ set(${subdir}_srcs ${subdir_srcs})
+
# Build local library and tests
message(STATUS "Building ${subdir}")
add_subdirectory(${subdir})
endforeach(subdir)
-#set (ccolamd_srcs
-# 3rdparty/CCOLAMD/Source/ccolamd.c
-# 3rdparty/CCOLAMD/Source/ccolamd_global.c
-# 3rdparty/UFconfig/UFconfig.c)
-#
-## install headers from 3rdparty libraries
-#add_subdirectory(3rdparty)
-#
-## Accumulate gtsam_srcs
-#set(gtsam_srcs ${ccolamd_srcs})
-#
-## Get all sources and headers from each subdirectory
-#foreach(subdir ${gtsam_subdirs})
-# message(STATUS "Building ${subdir}")
-# file(GLOB sub_gtsam_srcs "${subdir}/*.cpp")
-# list(APPEND gtsam_srcs ${sub_gtsam_srcs})
-#
-# # install headers
-# file(GLOB sub_gtsam_headers "${subdir}/*.h")
-# install(FILES ${sub_gtsam_headers} DESTINATION include/gtsam/${subdir})
-#endforeach(subdir)
-#
-## build shared and static versions of the library
-#add_library(${PROJECT_NAME}-static STATIC ${gtsam_srcs})
-#set_target_properties(${PROJECT_NAME}-static PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
-#set_target_properties(${PROJECT_NAME}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
-#set_target_properties(${PROJECT_NAME}-static PROPERTIES
-# VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
-# SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
-# )
-#install(TARGETS ${PROJECT_NAME}-static ARCHIVE DESTINATION lib)
-#
-#add_library(${PROJECT_NAME}-shared SHARED ${gtsam_srcs})
-#set_target_properties(${PROJECT_NAME}-shared PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
-#set_target_properties(${PROJECT_NAME}-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
-#set_target_properties(${PROJECT_NAME}-shared PROPERTIES
-# VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
-# SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
-# )
-#
-#install(TARGETS ${PROJECT_NAME}-shared LIBRARY DESTINATION lib )
-#
-## Get all sources and headers from each
-#foreach(subdir ${gtsam_subdirs})
-# # Build tests
-# file(GLOB tests_srcs "${subdir}/tests/test*.cpp")
-# foreach(test_src ${tests_srcs})
-# get_filename_component(test_base ${test_src} NAME_WE)
-# set( test_bin ${subdir}_${test_base} )
-# add_executable(${test_bin} EXCLUDE_FROM_ALL ${test_src})
-# add_dependencies(${test_bin} ${PROJECT_NAME}-static)
-# add_dependencies(check ${test_bin})
-# add_test(${subdir}/${test_base} ${EXECUTABLE_OUTPUT_PATH}${test_bin})
-# target_link_libraries(${test_bin} CppUnitLite gtsam-static)
-# add_custom_target(${test_bin}.run ${EXECUTABLE_OUTPUT_PATH}${test_bin} ${ARGN})
-# endforeach(test_src)
-#
-# # Build timing scripts
-# file(GLOB time_srcs "${subdir}/tests/time*.cpp")
-# foreach(time_src ${time_srcs})
-# get_filename_component(time_base ${time_src} NAME_WE)
-# set( time_bin ${time_base} )
-# add_executable(${time_bin} EXCLUDE_FROM_ALL ${time_src})
-# add_dependencies(${test_bin} ${PROJECT_NAME}-static)
-# add_dependencies(timing ${time_bin})
-# target_link_libraries(${time_bin} CppUnitLite gtsam-static)
-# add_custom_target(${time_base}.run ${EXECUTABLE_OUTPUT_PATH}${time_bin} ${ARGN})
-# endforeach(time_src)
-#endforeach(subdir)
+# assemble gtsam components
+set(gtsam_srcs
+ ${3rdparty_srcs}
+ ${base_srcs}
+ ${geometry_srcs}
+ ${inference_srcs}
+ ${linear_srcs}
+ ${nonlinear_srcs}
+ ${slam_srcs}
+)
+
+# build shared and static versions of the library
+message(STATUS "Building GTSAM - static")
+message(STATUS "GTSAM library sources ${gtsam_srcs}")
+add_library(gtsam-static STATIC ${gtsam_srcs})
+set_target_properties(gtsam-static PROPERTIES OUTPUT_NAME gtsam)
+set_target_properties(gtsam-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+set_target_properties(gtsam-static PROPERTIES
+ VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
+ SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
+ )
+install(TARGETS gtsam-static ARCHIVE DESTINATION lib)
+
+message(STATUS "Building GTSAM - shared")
+add_library(gtsam-shared SHARED ${gtsam_srcs})
+set_target_properties(gtsam-shared PROPERTIES OUTPUT_NAME gtsam)
+set_target_properties(gtsam-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
+set_target_properties(gtsam-shared PROPERTIES
+ VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
+ SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
+ )
+install(TARGETS gtsam-shared LIBRARY DESTINATION lib )
diff --git a/gtsam/base/CMakeLists.txt b/gtsam/base/CMakeLists.txt
index 476740677..6c788d9c8 100644
--- a/gtsam/base/CMakeLists.txt
+++ b/gtsam/base/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB base_srcs "*.cpp")
-add_library(base STATIC ${base_srcs})
-
# Install headers
file(GLOB base_headers "*.h")
install(FILES ${base_headers} DESTINATION include/gtsam/base)
diff --git a/gtsam/geometry/CMakeLists.txt b/gtsam/geometry/CMakeLists.txt
index ec16ba436..9decf7fa5 100644
--- a/gtsam/geometry/CMakeLists.txt
+++ b/gtsam/geometry/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB geometry_srcs "*.cpp")
-add_library(geometry STATIC ${geometry_srcs})
-
# link back to base
add_dependencies(geometry base)
diff --git a/gtsam/inference/CMakeLists.txt b/gtsam/inference/CMakeLists.txt
index 5a458812d..f1b671ea2 100644
--- a/gtsam/inference/CMakeLists.txt
+++ b/gtsam/inference/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB inference_srcs "*.cpp")
-add_library(inference STATIC ${inference_srcs})
-
# link back to previous convenience library
add_dependencies(inference base)
diff --git a/gtsam/linear/CMakeLists.txt b/gtsam/linear/CMakeLists.txt
index 0bbfcc782..1a5aea09b 100644
--- a/gtsam/linear/CMakeLists.txt
+++ b/gtsam/linear/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB linear_srcs "*.cpp")
-add_library(linear STATIC ${linear_srcs})
-
# link back to base
add_dependencies(linear inference)
diff --git a/gtsam/nonlinear/CMakeLists.txt b/gtsam/nonlinear/CMakeLists.txt
index 211ef1810..b489b7ba6 100644
--- a/gtsam/nonlinear/CMakeLists.txt
+++ b/gtsam/nonlinear/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB nonlinear_srcs "*.cpp")
-add_library(nonlinear STATIC ${nonlinear_srcs})
-
# link back to base
add_dependencies(nonlinear linear)
diff --git a/gtsam/slam/CMakeLists.txt b/gtsam/slam/CMakeLists.txt
index 08976d402..cc9e2c73d 100644
--- a/gtsam/slam/CMakeLists.txt
+++ b/gtsam/slam/CMakeLists.txt
@@ -1,7 +1,3 @@
-# Build convenience libraries
-file(GLOB slam_srcs "*.cpp")
-add_library(slam STATIC ${slam_srcs})
-
# link back to base
add_dependencies(slam nonlinear)