From 4332b9d5152c90b211e6667093c6c2bdda3ea15c Mon Sep 17 00:00:00 2001 From: James Lamb Date: Wed, 20 Mar 2024 12:21:46 -0500 Subject: [PATCH] [docs] [ci] encourage use of `cmake --build` (#6368) --- .ci/test.sh | 36 ++-- .ci/test_windows.ps1 | 16 +- docker/dockerfile-cli | 9 +- docker/gpu/dockerfile-cli-only-distroless.gpu | 6 +- docker/gpu/dockerfile-cli-only.gpu | 6 +- docker/gpu/dockerfile.gpu | 6 +- docs/GPU-Tutorial.rst | 9 +- docs/Installation-Guide.rst | 178 ++++++------------ tests/cpp_tests/test_single_row.cpp | 2 +- tests/cpp_tests/testutils.cpp | 2 +- 10 files changed, 99 insertions(+), 171 deletions(-) diff --git a/.ci/test.sh b/.ci/test.sh index 5af6e6de4e6b..15934aa7e9de 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 @@ -224,9 +222,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 @@ -252,9 +248,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 @@ -275,17 +269,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 4219b45ccd57..82c06db0e442 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(