summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorkmurray <k.murray@utoronto.ca>2018-03-28 13:42:24 -0400
committerkmurray <k.murray@utoronto.ca>2018-03-28 13:42:24 -0400
commitc3be5dc690a11f86760de01ed4333f656917a51b (patch)
tree4a6ce189b93bf444a6a1479d34830099e9097295 /CMakeLists.txt
parenta2d59be3f7f05c4757ade8b3b6f9fdf425de5cc0 (diff)
downloadabc-c3be5dc690a11f86760de01ed4333f656917a51b.tar.gz
abc-c3be5dc690a11f86760de01ed4333f656917a51b.tar.bz2
abc-c3be5dc690a11f86760de01ed4333f656917a51b.zip
CMake: Ensure abc executable depends on libabc
This ensures that libabc is built only once. Previously the code for libabc was being built twice: once for the abc executable target, and again for the libabc target.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt10
1 files changed, 6 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d3ac737b..7cf6f19a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -88,15 +88,17 @@ function(abc_properties target visibility)
target_link_libraries(${target} ${visibility} ${ABC_LIBS})
endfunction()
-add_executable(abc ${ABC_SRC})
-abc_properties(abc PRIVATE)
-
-list(REMOVE_ITEM ABC_SRC src/base/main/main.c)
+set(ABC_MAIN_SRC src/base/main/main.c)
+list(REMOVE_ITEM ABC_SRC ${ABC_MAIN_SRC})
add_library(libabc EXCLUDE_FROM_ALL ${ABC_SRC})
abc_properties(libabc PUBLIC)
set_property(TARGET libabc PROPERTY OUTPUT_NAME abc)
+add_executable(abc ${ABC_MAIN_SRC})
+target_link_libraries(abc PRIVATE libabc)
+abc_properties(abc PRIVATE)
+
add_library(libabc-pic EXCLUDE_FROM_ALL ${ABC_SRC})
abc_properties(libabc-pic PUBLIC)
set_property(TARGET libabc-pic PROPERTY POSITION_INDEPENDENT_CODE ON)