diff options
| author | Glenn Smith <glenn@vector35.com> | 2021-11-02 21:02:29 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2021-11-02 21:02:52 -0400 |
| commit | d2915cca83ac3ff5f89b3bf7c21327afd2b5338a (patch) | |
| tree | 28414eb616cff74d87c896c3bbc13d9b8924ff3c /CMakeLists.txt | |
| parent | 25e6ba8ebc30f711b9af56d3669e99d49dc96a4a (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
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 64 |
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) |
