diff --git a/.ci/test.sh b/.ci/test.sh
index 9b44d5df5aaa..7c087ed61ea2 100755
--- a/.ci/test.sh
+++ b/.ci/test.sh
@@ -22,7 +22,6 @@ if [[ "${TASK}" == "r-package" ]] || [[ "${TASK}" == "r-rchk" ]]; then
fi
if [[ "$TASK" == "cpp-tests" ]]; then
- mkdir $BUILD_DIRECTORY/build && cd $BUILD_DIRECTORY/build
if [[ $METHOD == "with-sanitizers" ]]; then
extra_cmake_opts="-DUSE_SANITIZER=ON"
if [[ -n $SANITIZERS ]]; then
@@ -31,9 +30,9 @@ if [[ "$TASK" == "cpp-tests" ]]; then
else
extra_cmake_opts=""
fi
- cmake -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF -DUSE_DEBUG=ON $extra_cmake_opts ..
- make testlightgbm -j4 || exit 1
- ./../testlightgbm || exit 1
+ cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF -DUSE_DEBUG=ON $extra_cmake_opts
+ cmake --build build --target testlightgbm -j4 || exit 1
+ ./testlightgbm || exit 1
exit 0
fi
@@ -42,21 +41,20 @@ CONDA_PYTHON_REQUIREMENT="python=$PYTHON_VERSION[build=*cpython]"
if [[ $TASK == "if-else" ]]; then
mamba create -q -y -n $CONDA_ENV ${CONDA_PYTHON_REQUIREMENT} numpy
source activate $CONDA_ENV
- mkdir $BUILD_DIRECTORY/build && cd $BUILD_DIRECTORY/build && cmake .. && make lightgbm -j4 || exit 1
+ cmake -B build -S . || exit 1
+ cmake --build build --target lightgbm -j4 || exit 1
cd $BUILD_DIRECTORY/tests/cpp_tests && ../../lightgbm config=train.conf convert_model_language=cpp convert_model=../../src/boosting/gbdt_prediction.cpp && ../../lightgbm config=predict.conf output_result=origin.pred || exit 1
- cd $BUILD_DIRECTORY/build && make lightgbm -j4 || exit 1
cd $BUILD_DIRECTORY/tests/cpp_tests && ../../lightgbm config=predict.conf output_result=ifelse.pred && python test.py || exit 1
exit 0
fi
if [[ $TASK == "swig" ]]; then
- mkdir $BUILD_DIRECTORY/build && cd $BUILD_DIRECTORY/build
if [[ $OS_NAME == "macos" ]]; then
- cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
+ cmake -B build -S . -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON
else
- cmake -DUSE_SWIG=ON ..
+ cmake -B build -S . -DUSE_SWIG=ON
fi
- make -j4 || exit 1
+ cmake --build build -j4 || exit 1
if [[ $OS_NAME == "linux" ]] && [[ $COMPILER == "gcc" ]]; then
objdump -T $BUILD_DIRECTORY/lib_lightgbm.so > $BUILD_DIRECTORY/objdump.log || exit 1
objdump -T $BUILD_DIRECTORY/lib_lightgbm_swig.so >> $BUILD_DIRECTORY/objdump.log || exit 1
@@ -228,9 +226,7 @@ if [[ $TASK == "gpu" ]]; then
pytest $BUILD_DIRECTORY/tests || exit 1
exit 0
elif [[ $METHOD == "source" ]]; then
- mkdir $BUILD_DIRECTORY/build
- cd $BUILD_DIRECTORY/build
- cmake -DUSE_GPU=ON ..
+ cmake -B build -S . -DUSE_GPU=ON
fi
elif [[ $TASK == "cuda" ]]; then
sed -i'.bak' 's/std::string device_type = "cpu";/std::string device_type = "cuda";/' $BUILD_DIRECTORY/include/LightGBM/config.h
@@ -256,9 +252,7 @@ elif [[ $TASK == "cuda" ]]; then
pytest $BUILD_DIRECTORY/tests || exit 1
exit 0
elif [[ $METHOD == "source" ]]; then
- mkdir $BUILD_DIRECTORY/build
- cd $BUILD_DIRECTORY/build
- cmake -DUSE_CUDA=ON ..
+ cmake -B build -S . -DUSE_CUDA=ON
fi
elif [[ $TASK == "mpi" ]]; then
if [[ $METHOD == "pip" ]]; then
@@ -279,17 +273,13 @@ elif [[ $TASK == "mpi" ]]; then
pytest $BUILD_DIRECTORY/tests || exit 1
exit 0
elif [[ $METHOD == "source" ]]; then
- mkdir $BUILD_DIRECTORY/build
- cd $BUILD_DIRECTORY/build
- cmake -DUSE_MPI=ON -DUSE_DEBUG=ON ..
+ cmake -B build -S . -DUSE_MPI=ON -DUSE_DEBUG=ON
fi
else
- mkdir $BUILD_DIRECTORY/build
- cd $BUILD_DIRECTORY/build
- cmake ..
+ cmake -B build -S .
fi
-make _lightgbm -j4 || exit 1
+cmake --build build --target _lightgbm -j4 || exit 1
cd $BUILD_DIRECTORY && sh ./build-python.sh install --precompile --user || exit 1
pytest $BUILD_DIRECTORY/tests || exit 1
diff --git a/.ci/test_windows.ps1 b/.ci/test_windows.ps1
index 35e71b72a75b..0ff1ff9c2d88 100644
--- a/.ci/test_windows.ps1
+++ b/.ci/test_windows.ps1
@@ -17,11 +17,9 @@ if ($env:TASK -eq "r-package") {
}
if ($env:TASK -eq "cpp-tests") {
- mkdir $env:BUILD_SOURCESDIRECTORY/build; cd $env:BUILD_SOURCESDIRECTORY/build
- cmake -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF -DUSE_DEBUG=ON -A x64 ..
- cmake --build . --target testlightgbm --config Debug ; Check-Output $?
- cd ../Debug
- .\testlightgbm.exe ; Check-Output $?
+ cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF -DUSE_DEBUG=ON -A x64
+ cmake --build build --target testlightgbm --config Debug ; Check-Output $?
+ .\Debug\testlightgbm.exe ; Check-Output $?
Exit 0
}
@@ -32,8 +30,8 @@ if ($env:TASK -eq "swig") {
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::ExtractToDirectory("$env:BUILD_SOURCESDIRECTORY/swig/swigwin.zip", "$env:BUILD_SOURCESDIRECTORY/swig")
$env:PATH = "$env:BUILD_SOURCESDIRECTORY/swig/swigwin-4.0.2;" + $env:PATH
- mkdir $env:BUILD_SOURCESDIRECTORY/build; cd $env:BUILD_SOURCESDIRECTORY/build
- cmake -A x64 -DUSE_SWIG=ON .. ; cmake --build . --target ALL_BUILD --config Release ; Check-Output $?
+ cmake -B build -S . -A x64 -DUSE_SWIG=ON ; Check-Output $?
+ cmake --build build --target ALL_BUILD --config Release ; Check-Output $?
if ($env:AZURE -eq "true") {
cp $env:BUILD_SOURCESDIRECTORY/build/lightgbmlib.jar $env:BUILD_ARTIFACTSTAGINGDIRECTORY/lightgbmlib_win.jar ; Check-Output $?
}
@@ -71,8 +69,8 @@ if ($env:TASK -ne "bdist") {
}
if ($env:TASK -eq "regular") {
- mkdir $env:BUILD_SOURCESDIRECTORY/build; cd $env:BUILD_SOURCESDIRECTORY/build
- cmake -A x64 .. ; cmake --build . --target ALL_BUILD --config Release ; Check-Output $?
+ cmake -B build -S . -A x64 ; Check-Output $?
+ cmake --build build --target ALL_BUILD --config Release ; Check-Output $?
cd $env:BUILD_SOURCESDIRECTORY
sh $env:BUILD_SOURCESDIRECTORY/build-python.sh install --precompile ; Check-Output $?
cp $env:BUILD_SOURCESDIRECTORY/Release/lib_lightgbm.dll $env:BUILD_ARTIFACTSTAGINGDIRECTORY
diff --git a/docker/dockerfile-cli b/docker/dockerfile-cli
index dc1972ab7df4..51e7bd9627e5 100644
--- a/docker/dockerfile-cli
+++ b/docker/dockerfile-cli
@@ -21,11 +21,10 @@ RUN git clone \
--branch stable \
--depth 1 \
https://github.com/Microsoft/LightGBM && \
- mkdir LightGBM/build && \
- cd LightGBM/build && \
- cmake .. && \
- make -j4 && \
- make install && \
+ cd ./Lightgbm && \
+ cmake -B build -S . && \
+ cmake --build build -j4 && \
+ cmake --install build && \
cd "${HOME}" && \
rm -rf LightGBM
diff --git a/docker/gpu/dockerfile-cli-only-distroless.gpu b/docker/gpu/dockerfile-cli-only-distroless.gpu
index d391df281a4d..b195d427fc1c 100644
--- a/docker/gpu/dockerfile-cli-only-distroless.gpu
+++ b/docker/gpu/dockerfile-cli-only-distroless.gpu
@@ -40,9 +40,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# LightGBM
WORKDIR /opt
RUN git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \
- cd LightGBM && mkdir build && cd build && \
- cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR .. && \
- make OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES
+ cd LightGBM && \
+ cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR && \
+ OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES cmake --build build
FROM gcr.io/distroless/cc-debian10
COPY --from=build \
diff --git a/docker/gpu/dockerfile-cli-only.gpu b/docker/gpu/dockerfile-cli-only.gpu
index f59cc45484c8..baec8a7e0841 100644
--- a/docker/gpu/dockerfile-cli-only.gpu
+++ b/docker/gpu/dockerfile-cli-only.gpu
@@ -40,9 +40,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# LightGBM
WORKDIR /opt
RUN git clone --recursive --branch stable --depth 1 https://github.com/Microsoft/LightGBM && \
- cd LightGBM && mkdir build && cd build && \
- cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR .. && \
- make OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES
+ cd LightGBM && \
+ cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=${OPENCL_LIBRARIES}/libOpenCL.so.1 -DOpenCL_INCLUDE_DIR=$OPENCL_INCLUDE_DIR && \
+ OPENCL_HEADERS=$OPENCL_INCLUDE_DIR LIBOPENCL=$OPENCL_LIBRARIES cmake --build build
FROM nvidia/opencl:runtime
RUN apt-get update && apt-get install -y --no-install-recommends \
diff --git a/docker/gpu/dockerfile.gpu b/docker/gpu/dockerfile.gpu
index 74c301234020..48d99dcd0859 100644
--- a/docker/gpu/dockerfile.gpu
+++ b/docker/gpu/dockerfile.gpu
@@ -82,9 +82,9 @@ RUN conda config --set always_yes yes --set changeps1 no && \
RUN cd /usr/local/src && mkdir lightgbm && cd lightgbm && \
git clone --recursive --branch stable --depth 1 https://github.com/microsoft/LightGBM && \
- cd LightGBM && mkdir build && cd build && \
- cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ .. && \
- make OPENCL_HEADERS=/usr/local/cuda-8.0/targets/x86_64-linux/include LIBOPENCL=/usr/local/cuda-8.0/targets/x86_64-linux/lib
+ cd LightGBM && \
+ cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ && \
+ OPENCL_HEADERS=/usr/local/cuda-8.0/targets/x86_64-linux/include LIBOPENCL=/usr/local/cuda-8.0/targets/x86_64-linux/lib cmake --build build
ENV PATH /usr/local/src/lightgbm/LightGBM:${PATH}
diff --git a/docs/GPU-Tutorial.rst b/docs/GPU-Tutorial.rst
index ee6d4074f9b8..bc7e3d92bc70 100644
--- a/docs/GPU-Tutorial.rst
+++ b/docs/GPU-Tutorial.rst
@@ -59,13 +59,10 @@ Now we are ready to checkout LightGBM and compile it with GPU support:
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_GPU=1 ..
+ cmake -B build -S . -DUSE_GPU=1
# if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
- # cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
- make -j$(nproc)
- cd ..
+ # cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/
+ cmake --build build -j$(nproc)
You will see two binaries are generated, ``lightgbm`` and ``lib_lightgbm.so``.
diff --git a/docs/Installation-Guide.rst b/docs/Installation-Guide.rst
index 8e965210c1f5..a74dc5112c07 100644
--- a/docs/Installation-Guide.rst
+++ b/docs/Installation-Guide.rst
@@ -77,10 +77,8 @@ From Command Line
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 ..
- cmake --build . --target ALL_BUILD --config Release
+ cmake -B build -S . -A x64
+ cmake --build build --target ALL_BUILD --config Release
The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder.
@@ -95,14 +93,12 @@ MinGW-w64
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -G "MinGW Makefiles" ..
- mingw32-make.exe -j4
+ cmake -B build -S . -G "MinGW Makefiles"
+ cmake --build build -j4
The ``.exe`` and ``.dll`` files will be in ``LightGBM/`` folder.
-**Note**: You may need to run the ``cmake -G "MinGW Makefiles" ..`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
+**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles"`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
It is recommended that you use **Visual Studio** since it has better multithreading efficiency in **Windows** for many-core systems
(see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__).
@@ -122,10 +118,8 @@ On Linux LightGBM can be built using **CMake** and **gcc** or **Clang**.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake ..
- make -j4
+ cmake -B build -S .
+ cmake --build build -j4
**Note**: glibc >= 2.28 is required.
@@ -142,10 +136,8 @@ On Linux, LightGBM can also be built with `Ninja `__ i
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -G 'Ninja' ..
- ninja -j2
+ cmake -B build -S . -G 'Ninja'
+ cmake --build build -j2
macOS
~~~~~
@@ -185,10 +177,8 @@ Build from GitHub
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake ..
- make -j4
+ cmake -B build -S .
+ cmake --build build -j4
gcc
^^^
@@ -212,10 +202,8 @@ gcc
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine
- mkdir build
- cd build
- cmake ..
- make -j4
+ cmake -B build -S .
+ cmake --build build -j4
Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.
@@ -274,10 +262,8 @@ From Command Line
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 -DUSE_OPENMP=OFF ..
- cmake --build . --target ALL_BUILD --config Release
+ cmake -B build -S . -A x64 -DUSE_OPENMP=OFF
+ cmake --build build --target ALL_BUILD --config Release
The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder.
@@ -292,14 +278,12 @@ MinGW-w64
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -G "MinGW Makefiles" -DUSE_OPENMP=OFF ..
- mingw32-make.exe -j4
+ cmake -B build -S . -G "MinGW Makefiles" -DUSE_OPENMP=OFF
+ cmake --build build -j4
The ``.exe`` and ``.dll`` files will be in ``LightGBM/`` folder.
-**Note**: You may need to run the ``cmake -G "MinGW Makefiles" -DUSE_OPENMP=OFF ..`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
+**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_OPENMP=OFF`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
Linux
^^^^^
@@ -314,10 +298,8 @@ On Linux a version of LightGBM without OpenMP support can be built using **CMake
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_OPENMP=OFF ..
- make -j4
+ cmake -B build -S . -DUSE_OPENMP=OFF
+ cmake --build build -j4
**Note**: glibc >= 2.14 is required.
@@ -343,10 +325,8 @@ Only **Apple Clang** version 8.1 or higher is supported.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_OPENMP=OFF ..
- make -j4
+ cmake -B build -S . -DUSE_OPENMP=OFF
+ cmake --build build -j4
gcc
***
@@ -370,10 +350,8 @@ gcc
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine
- mkdir build
- cd build
- cmake -DUSE_OPENMP=OFF ..
- make -j4
+ cmake -B build -S . -DUSE_OPENMP=OFF
+ cmake --build build -j4
Build MPI Version
~~~~~~~~~~~~~~~~~
@@ -422,10 +400,8 @@ From Command Line
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 -DUSE_MPI=ON ..
- cmake --build . --target ALL_BUILD --config Release
+ cmake -B build -S . -A x64 -DUSE_MPI=ON
+ cmake --build build --target ALL_BUILD --config Release
The ``.exe`` and ``.dll`` files will be in ``LightGBM/Release`` folder.
@@ -446,10 +422,8 @@ On Linux an MPI version of LightGBM can be built using **Open MPI**, **CMake** a
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_MPI=ON ..
- make -j4
+ cmake -B build -S . -DUSE_MPI=ON
+ cmake --build build -j4
**Note**: glibc >= 2.14 is required.
@@ -489,10 +463,8 @@ Only **Apple Clang** version 8.1 or higher is supported.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_MPI=ON ..
- make -j4
+ cmake -B build -S . -DUSE_MPI=ON
+ cmake --build build -j4
gcc
***
@@ -522,10 +494,8 @@ gcc
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine
- mkdir build
- cd build
- cmake -DUSE_MPI=ON ..
- make -j4
+ cmake -B build -S . -DUSE_MPI=ON
+ cmake --build build -j4
Build GPU Version
~~~~~~~~~~~~~~~~~
@@ -555,12 +525,10 @@ To build LightGBM GPU version, run the following commands:
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_GPU=1 ..
+ cmake -B build -S . -DUSE_GPU=1
# if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
- # cmake -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/ ..
- make -j4
+ # cmake -B build -S . -DUSE_GPU=1 -DOpenCL_LIBRARY=/usr/local/cuda/lib64/libOpenCL.so -DOpenCL_INCLUDE_DIR=/usr/local/cuda/include/
+ cmake --build build
**Note**: glibc >= 2.14 is required.
@@ -605,12 +573,10 @@ Following procedure is for the **MSVC** (Microsoft Visual C++) build.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 ..
+ cmake -B build -S . -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0
# if you have installed NVIDIA CUDA to a customized location, you should specify paths to OpenCL headers and library like the following:
- # cmake -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include" ..
- cmake --build . --target ALL_BUILD --config Release
+ # cmake -B build -S . -A x64 -DUSE_GPU=1 -DBOOST_ROOT=C:/local/boost_1_63_0 -DBOOST_LIBRARYDIR=C:/local/boost_1_63_0/lib64-msvc-14.0 -DOpenCL_LIBRARY="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/lib/x64/OpenCL.lib" -DOpenCL_INCLUDE_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/include"
+ cmake --build build --target ALL_BUILD --config Release
**Note**: ``C:/local/boost_1_63_0`` and ``C:/local/boost_1_63_0/lib64-msvc-14.0`` are locations of your **Boost** binaries (assuming you've downloaded 1.63.0 version for Visual Studio 2015).
@@ -644,10 +610,8 @@ To build LightGBM CUDA version, run the following commands:
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_CUDA=1 ..
- make -j4
+ cmake -B build -S . -DUSE_CUDA=1
+ cmake --build build -j4
**Note**: glibc >= 2.14 is required.
@@ -682,16 +646,14 @@ On Linux a HDFS version of LightGBM can be built using **CMake** and **gcc**.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_HDFS=ON ..
+ cmake -B build -S . -DUSE_HDFS=ON
# if you have installed HDFS to a customized location, you should specify paths to HDFS headers (hdfs.h) and library (libhdfs.so) like the following:
# cmake \
# -DUSE_HDFS=ON \
# -DHDFS_LIB="/opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/lib64/libhdfs.so" \
# -DHDFS_INCLUDE_DIR="/opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/include/" \
# ..
- make -j4
+ cmake --build build -j4
**Note**: glibc >= 2.14 is required.
@@ -720,10 +682,8 @@ VS Build Tools
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 -DUSE_SWIG=ON ..
- cmake --build . --target ALL_BUILD --config Release
+ cmake -B build -S . -A x64 -DUSE_SWIG=ON
+ cmake --build build --target ALL_BUILD --config Release
The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/Release`` folder.
@@ -740,14 +700,12 @@ MinGW-w64
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -G "MinGW Makefiles" -DUSE_SWIG=ON ..
- mingw32-make.exe -j4
+ cmake -B build -S . -G "MinGW Makefiles" -DUSE_SWIG=ON
+ cmake --build build -j4
The ``.jar`` file will be in ``LightGBM/build`` folder and the ``.dll`` files will be in ``LightGBM/`` folder.
-**Note**: You may need to run the ``cmake -G "MinGW Makefiles" -DUSE_SWIG=ON ..`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
+**Note**: You may need to run the ``cmake -B build -S . -G "MinGW Makefiles" -DUSE_SWIG=ON`` one more time if you encounter the ``sh.exe was found in your PATH`` error.
It is recommended to use **VS Build Tools (Visual Studio)** since it has better multithreading efficiency in **Windows** for many-core systems
(see `Question 4 <./FAQ.rst#i-am-using-windows-should-i-use-visual-studio-or-mingw-for-compiling-lightgbm>`__ and `Question 8 <./FAQ.rst#cpu-usage-is-low-like-10-in-windows-when-using-lightgbm-on-very-large-datasets-with-many-core-systems>`__).
@@ -767,10 +725,8 @@ On Linux a Java wrapper of LightGBM can be built using **Java**, **SWIG**, **CMa
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_SWIG=ON ..
- make -j4
+ cmake -B build -S . -DUSE_SWIG=ON
+ cmake --build build -j4
**Note**: glibc >= 2.14 is required.
@@ -807,10 +763,8 @@ Only **Apple Clang** version 8.1 or higher is supported.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
- make -j4
+ cmake -B build -S . -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON
+ cmake --build build -j4
gcc
***
@@ -834,10 +788,8 @@ gcc
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine
- mkdir build
- cd build
- cmake -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON ..
- make -j4
+ cmake -B build -S . -DUSE_SWIG=ON -DAPPLE_OUTPUT_DYLIB=ON
+ cmake --build build -j4
Also, you may want to read `gcc Tips <./gcc-Tips.rst>`__.
@@ -857,10 +809,8 @@ On Windows, C++ unit tests of LightGBM can be built using **CMake** and **VS Bui
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -A x64 -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
- cmake --build . --target testlightgbm --config Debug
+ cmake -B build -S . -A x64 -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF
+ cmake --build build --target testlightgbm --config Debug
The ``.exe`` file will be in ``LightGBM/Debug`` folder.
@@ -877,10 +827,8 @@ On Linux a C++ unit tests of LightGBM can be built using **CMake** and **gcc** o
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
- make testlightgbm -j4
+ cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF
+ cmake --build build --target testlightgbm -j4
**Note**: glibc >= 2.14 is required.
@@ -906,10 +854,8 @@ Only **Apple Clang** version 8.1 or higher is supported.
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
- mkdir build
- cd build
- cmake -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
- make testlightgbm -j4
+ cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF
+ cmake --build build --target testlightgbm -j4
gcc
***
@@ -933,10 +879,8 @@ gcc
git clone --recursive https://github.com/microsoft/LightGBM
cd LightGBM
export CXX=g++-7 CC=gcc-7 # replace "7" with version of gcc installed on your machine
- mkdir build
- cd build
- cmake -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF ..
- make testlightgbm -j4
+ cmake -B build -S . -DBUILD_CPP_TEST=ON -DUSE_OPENMP=OFF
+ cmake --build build --target testlightgbm -j4
.. |download artifacts| image:: ./_static/images/artifacts-not-available.svg
diff --git a/tests/cpp_tests/test_single_row.cpp b/tests/cpp_tests/test_single_row.cpp
index c14a681bea68..c8e9defeea7e 100644
--- a/tests/cpp_tests/test_single_row.cpp
+++ b/tests/cpp_tests/test_single_row.cpp
@@ -49,7 +49,7 @@ TEST(SingleRow, JustWorks) {
&output_size);
EXPECT_EQ(0, result) << "LGBM_BoosterCalcNumPredict result code: " << result;
- std::ifstream test_file("../examples/binary_classification/binary.test");
+ std::ifstream test_file("examples/binary_classification/binary.test");
std::vector test;
double x;
int test_set_size = 0;
diff --git a/tests/cpp_tests/testutils.cpp b/tests/cpp_tests/testutils.cpp
index 8d8b7a66164a..b2dde31b3755 100644
--- a/tests/cpp_tests/testutils.cpp
+++ b/tests/cpp_tests/testutils.cpp
@@ -21,7 +21,7 @@ namespace LightGBM {
* Creates a Dataset from the internal repository examples.
*/
int TestUtils::LoadDatasetFromExamples(const char* filename, const char* config, DatasetHandle* out) {
- std::string fullPath("../examples/");
+ std::string fullPath("examples/");
fullPath += filename;
Log::Info("Debug sample data path: %s", fullPath.c_str());
return LGBM_DatasetCreateFromFile(