diff --git a/CMakeLists.txt b/CMakeLists.txt index 69e8d015621c..08a235999e7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -358,6 +358,7 @@ endif(USE_CUDA) ) add_library(lightgbm_objs OBJECT ${SOURCES}) +target_compile_options(lightgbm_objs PRIVATE -D_lightgbm_EXPORTS) add_executable(lightgbm src/main.cpp src/application/application.cpp $) set(API_SOURCES "src/c_api.cpp") @@ -369,6 +370,7 @@ if(__BUILD_FOR_R) endif(__BUILD_FOR_R) add_library(lightgbm_capi_objs OBJECT ${API_SOURCES}) +target_compile_options(lightgbm_capi_objs PRIVATE -D_lightgbm_EXPORTS) if (BUILD_STATIC_LIB) add_library(_lightgbm STATIC $ $) @@ -424,6 +426,11 @@ endif(USE_MPI) if(USE_OPENMP) if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + # Include directory has to be explicitly speicfied when using CMake object library + # to compile R package. Otherwise, omp.h can't be found. + # OpenMP_CXX_INCLUDE_DIRS is empty so use hard coded path here. + include_directories(SYSTEM /usr/local/include) + TARGET_LINK_LIBRARIES(lightgbm OpenMP::OpenMP_CXX) TARGET_LINK_LIBRARIES(_lightgbm OpenMP::OpenMP_CXX) endif()