summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2021-11-02 21:02:29 -0400
committerGlenn Smith <glenn@vector35.com>2021-11-02 21:02:52 -0400
commitd2915cca83ac3ff5f89b3bf7c21327afd2b5338a (patch)
tree28414eb616cff74d87c896c3bbc13d9b8924ff3c
parent25e6ba8ebc30f711b9af56d3669e99d49dc96a4a (diff)
CMake: set link directories and libraries
Even when not building examples, the linked libraries should be set so that any dependent binaries can link with them. The link directories need to be set as well so the dependents can find them. Fixes #2751
-rw-r--r--CMakeLists.txt64
1 files changed, 32 insertions, 32 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 33dd0635..cc17fef7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -54,54 +54,54 @@ target_include_directories(binaryninjaapi
PUBLIC ${PROJECT_SOURCE_DIR})
# We only need to find the core and UI when we also build the examples
-if(BN_API_BUILD_EXAMPLES OR BN_INTERNAL_BUILD)
- if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD))
- find_library(BN_CORE_LIBRARY
- NAMES binaryninjacore libbinaryninjacore.so.1
+if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD))
+ find_library(BN_CORE_LIBRARY REQUIRED
+ NAMES binaryninjacore libbinaryninjacore.so.1
+ PATHS ${BN_INSTALL_BIN_DIR})
+
+ if(BN_CORE_LIBRARY)
+ message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}")
+ else()
+ message(FATAL_ERROR "Binary Ninja Core Not Found")
+ endif()
+endif()
+
+if(NOT HEADLESS)
+ if((NOT BN_UI_LIBRARY) AND (NOT BN_INTERNAL_BUILD))
+ find_library(BN_UI_LIBRARY REQUIRED
+ NAMES binaryninjaui libbinaryninjaui.so.1
PATHS ${BN_INSTALL_BIN_DIR})
- if(BN_CORE_LIBRARY)
- message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}")
+ if(BN_UI_LIBRARY)
+ message(STATUS "Binary Ninja UI: ${BN_UI_LIBRARY}")
else()
- message(FATAL_ERROR "Binary Ninja Core Not Found")
+ message(FATAL_ERROR "Binary Ninja UI Not Found")
endif()
endif()
+endif()
- if(NOT HEADLESS)
- if((NOT BN_UI_LIBRARY) AND (NOT BN_INTERNAL_BUILD))
- find_library(BN_UI_LIBRARY
- NAMES binaryninjaui libbinaryninjaui.so.1
- PATHS ${BN_INSTALL_BIN_DIR})
+if(NOT BN_INTERNAL_BUILD)
+ target_link_libraries(binaryninjaapi PUBLIC ${BN_CORE_LIBRARY})
+ target_link_directories(binaryninjaapi PUBLIC ${BN_INSTALL_BIN_DIR})
+else()
+ target_link_libraries(binaryninjaapi PUBLIC binaryninjacore)
+endif()
- if(BN_UI_LIBRARY)
- message(STATUS "Binary Ninja UI: ${BN_UI_LIBRARY}")
- else()
- message(FATAL_ERROR "Binary Ninja UI Not Found")
- endif()
- endif()
- endif()
+if(NOT HEADLESS)
+ target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}/ui)
if(NOT BN_INTERNAL_BUILD)
- target_link_libraries(binaryninjaapi ${BN_CORE_LIBRARY})
+ target_link_libraries(binaryninjaapi PUBLIC ${BN_UI_LIBRARY})
+ target_link_directories(binaryninjaapi PUBLIC ${BN_INSTALL_BIN_DIR})
else()
- target_link_libraries(binaryninjaapi binaryninjacore)
- endif()
-
- if(NOT HEADLESS)
- target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}/ui)
-
- if(NOT BN_INTERNAL_BUILD)
- target_link_libraries(binaryninjaapi ${BN_UI_LIBRARY})
- else()
- target_link_libraries(binaryninjaapi)
- endif()
+ # Nothing
endif()
endif()
set_target_properties(binaryninjaapi PROPERTIES
CXX_STANDARD 17
CXX_VISIBILITY_PRESET hidden
- CXX_STANDARD_REQUIRED ON
+ CXX_STANDARD_REQUIRED ON
VISIBILITY_INLINES_HIDDEN ON
POSITION_INDEPENDENT_CODE ON
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out)