Skip to content

Commit d8bee3f

Browse files
authored
Merge pull request #13 from CESNET/alfClassifier-lightGBM
CMake - Fix LightGBM Dependency
2 parents eda39c8 + bf837d9 commit d8bee3f

4 files changed

Lines changed: 30 additions & 16 deletions

File tree

cmake/modules/FindLIGHTGBM.cmake

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,40 @@ if(PKG_CONFIG_FOUND)
1414
pkg_check_modules(PC_LIGHTGBM QUIET lightgbm)
1515
endif()
1616

17+
# Find headers
1718
find_path(
18-
LIGHTGBM_INCLUDE_DIR lightgbm
19+
LIGHTGBM_INCLUDE_DIR
1920
NAMES LightGBM/c_api.h
2021
HINTS ${PC_LIGHTGBM_INCLUDEDIR} ${PC_LIGHTGBM_INCLUDE_DIRS}
21-
PATH_SUFFIXES include
22+
/usr/local/include
23+
/usr/include
2224
)
2325

24-
if(PC_LIGHTGBM_VERSION)
25-
# Version extracted from pkg-config
26-
set(LIGHTGBM_VERSION_STRING ${PC_LIGHTGBM_VERSION})
27-
endif()
26+
# Find library
27+
find_library(
28+
LIGHTGBM_LIBRARY
29+
NAMES lightgbm lib_lightgbm _lightgbm
30+
HINTS ${PC_LIGHTGBM_LIBDIR} ${PC_LIGHTGBM_LIBRARY_DIRS}
31+
/usr/local/lib
32+
/usr/lib
33+
)
2834

29-
# Handle find_package() arguments (i.e. QUIETLY and REQUIRED) and set
30-
# LIGHTGBM_FOUND to TRUE if all listed variables are filled.
3135
include(FindPackageHandleStandardArgs)
3236
find_package_handle_standard_args(
3337
LIGHTGBM
34-
REQUIRED_VARS LIGHTGBM_INCLUDE_DIR
35-
VERSION_VAR LIGHTGBM_VERSION_STRING
38+
REQUIRED_VARS LIGHTGBM_INCLUDE_DIR LIGHTGBM_LIBRARY
3639
)
3740

38-
set(LIGHTGBM_INCLUDE_DIRS ${LIGHTGBM_INCLUDE_DIR})
39-
mark_as_advanced(LIGHTGBM_INCLUDE_DIR)
41+
if(LIGHTGBM_FOUND)
42+
set(LIGHTGBM_INCLUDE_DIRS ${LIGHTGBM_INCLUDE_DIR})
43+
set(LIGHTGBM_LIBRARIES ${LIGHTGBM_LIBRARY})
44+
45+
add_library(LightGBM::lightgbm SHARED IMPORTED)
46+
set_target_properties(LightGBM::lightgbm PROPERTIES
47+
IMPORTED_LOCATION "${LIGHTGBM_LIBRARY}"
48+
INTERFACE_INCLUDE_DIRECTORIES "${LIGHTGBM_INCLUDE_DIRS}"
49+
)
50+
endif()
51+
52+
mark_as_advanced(LIGHTGBM_INCLUDE_DIR LIGHTGBM_LIBRARY)
4053

include/wif/classifiers/genericMlClassifier.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
namespace WIF {
1717

1818
/**
19-
* @brief Abstract class specifying interfaces for ML classifiers (ScikitMlClassifier and
20-
* MlpackClassifier)
19+
* @brief Abstract class specifying interfaces for ML classifiers (ScikitMlClassifier,
20+
* MlpackClassifier and LightGBMClassifier)
2121
*
2222
*/
2323
class GenericMlClassifier : public Classifier {
@@ -32,7 +32,7 @@ class GenericMlClassifier : public Classifier {
3232
* @brief Reload the model from file, which was set in the constructor
3333
*
3434
* @param logicalName contains the logical name of the trained model. The parameter is used only
35-
* with MlpackClassifier (it is unused with ScikitMlClassifier)
35+
* with MlpackClassifier (it is unused with ScikitMlClassifier and LightGBMClassifier)
3636
*/
3737
virtual void reloadModelFromDisk(const std::string& logicalName = "trained_data") = 0;
3838
};

src/wif/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ set(LIBWIF_LIBS
3131
Boost::regex
3232
Boost::serialization
3333
dstlib::dst
34+
LightGBM::lightgbm
3435
OpenMP::OpenMP_CXX
3536
Python3::Python
3637
Python3::NumPy

src/wif/classifiers/lightGBMClassifier.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ void LightGBMClassifier::reloadModelFromDisk([[maybe_unused]] const std::string&
4242
m_lightGBMWrapper->loadModel(m_lightGBMWrapper->getModelPath());
4343
}
4444

45-
} // namespace WIF
45+
} // namespace WIF

0 commit comments

Comments
 (0)