From c2e47f80d71283b45f33dd3b5a14c9d8957484ca Mon Sep 17 00:00:00 2001 From: Ryan Curtin Date: Sun, 20 Nov 2022 23:08:20 -0500 Subject: [PATCH] Set default for BUILD_TESTS to OFF (#3316) related issue: #3314 --- .ci/ci.yaml | 20 ++++++++++---------- .ci/linux-steps.yaml | 2 +- .ci/macos-steps.yaml | 2 +- .github/workflows/main.yml | 4 ++-- CMake/TestError.cmake | 3 +++ CMakeLists.txt | 2 +- HISTORY.md | 4 ++++ src/mlpack/CMakeLists.txt | 5 +++++ src/mlpack/tests/CMakeLists.txt | 1 - 9 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 CMake/TestError.cmake diff --git a/.ci/ci.yaml b/.ci/ci.yaml index 6490c15fdf..0d6c38e83e 100644 --- a/.ci/ci.yaml +++ b/.ci/ci.yaml @@ -15,20 +15,20 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DPYTHON_EXECUTABLE=/usr/bin/python3 -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: julia.version: '1.3.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_GO_BINDINGS=OFF -DJULIA_EXECUTABLE=/opt/julia-1.6.3/bin/julia -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' Markdown: - CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=OFF -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_MARKDOWN_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' steps: - template: linux-steps.yaml @@ -40,21 +40,21 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '3.7' Python: binding: 'python' python.version: '3.7' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=ON -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Julia: python.version: '3.7' julia.version: '1.6.3' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_JULIA_BINDINGS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' Go: binding: 'go' python.version: '3.7' go.version: '1.11.0' - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=ON -DBUILD_R_BINDINGS=OFF' steps: - template: macos-steps.yaml @@ -67,7 +67,7 @@ jobs: strategy: matrix: Plain: - CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' + CMakeArgs: '-DDEBUG=ON -DPROFILE=OFF -DBUILD_TESTS=ON -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=OFF' python.version: '2.7' CMakeGenerator: '-G "Visual Studio 16 2019"' MSBuildVersion: '16.0' diff --git a/.ci/linux-steps.yaml b/.ci/linux-steps.yaml index be94867ecd..6ad21cb7d6 100644 --- a/.ci/linux-steps.yaml +++ b/.ci/linux-steps.yaml @@ -79,7 +79,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 && make mlpack_test -j2 +- script: cd build && make -j2 displayName: 'Build' # Run tests via ctest. diff --git a/.ci/macos-steps.yaml b/.ci/macos-steps.yaml index 284e1d4f4b..611c2618a3 100644 --- a/.ci/macos-steps.yaml +++ b/.ci/macos-steps.yaml @@ -45,7 +45,7 @@ steps: displayName: 'CMake' # Build mlpack -- script: cd build && make -j2 && make -j2 mlpack_test +- script: cd build && make -j2 displayName: 'Build' # Run tests via ctest. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ffb1f9b8cd..a4d3825354 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,11 +69,11 @@ jobs: - name: CMake run: | mkdir build - cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON .. + cd build && cmake -DDEBUG=OFF -DPROFILE=OFF -DBUILD_CLI_EXECUTABLES=OFF -DBUILD_PYTHON_BINDINGS=OFF -DBUILD_JULIA_BINDINGS=OFF -DBUILD_GO_BINDINGS=OFF -DBUILD_R_BINDINGS=ON -DDOWNLOAD_DEPENDENCIES=ON -DBUILD_TESTS=ON .. - name: Build run: | - cd build && make && make mlpack_test + cd build && make - name: Run tests via ctest run: | diff --git a/CMake/TestError.cmake b/CMake/TestError.cmake new file mode 100644 index 0000000000..7de12c20f9 --- /dev/null +++ b/CMake/TestError.cmake @@ -0,0 +1,3 @@ +# A very simple script to issue an error if the mlpack_test target is not +# defined. +message(FATAL_ERROR "To build the mlpack_test target, reconfigure CMake with the BUILD_TESTS option set to ON! (i.e. `cmake -DBUILD_TESTS=ON ../`)") diff --git a/CMakeLists.txt b/CMakeLists.txt index f6f3ce45e0..34b62f169f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ option(DEBUG "Compile with debugging information." OFF) option(PROFILE "Compile with profiling information." OFF) option(ARMA_EXTRA_DEBUG "Compile with extra Armadillo debugging symbols." OFF) option(TEST_VERBOSE "Run test cases with verbose output." OFF) -option(BUILD_TESTS "Build tests." ON) +option(BUILD_TESTS "Build tests. (Note: time consuming!)" OFF) option(BUILD_CLI_EXECUTABLES "Build command-line executables." ON) option(DOWNLOAD_DEPENDENCIES "Automatically download dependencies if not available." OFF) option(BUILD_GO_SHLIB "Build Go shared library." OFF) diff --git a/HISTORY.md b/HISTORY.md index e9fe27ace3..9dc40b29f8 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -10,6 +10,10 @@ * The `/std:c++17` and `/Zc:__cplusplus` options are now required when using Visual Studio (#3318). Documentation and compile-time checks added. + + * Set `BUILD_TESTS` to `OFF` by default. If you want to build tests, like + `mlpack_test`, manually set `BUILD_TESTS` to `ON` in your CMake + configuration step (#3316). ### mlpack 4.0.0 ###### 2022-10-23 diff --git a/src/mlpack/CMakeLists.txt b/src/mlpack/CMakeLists.txt index 6f3bdc8c57..1bc22d6728 100644 --- a/src/mlpack/CMakeLists.txt +++ b/src/mlpack/CMakeLists.txt @@ -6,6 +6,11 @@ add_subdirectory(methods) # If necessary, configure the tests. if (BUILD_TESTS) add_subdirectory(tests) +else () + # Add convenience target to tell the user they need BUILD_TESTS if they try to + # build mlpack_test. + add_custom_target(mlpack_test + ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/CMake/TestError.cmake) endif () # At install time, we simply install the src/ directory to include/ (though we diff --git a/src/mlpack/tests/CMakeLists.txt b/src/mlpack/tests/CMakeLists.txt index a3f557c385..17704fbd45 100644 --- a/src/mlpack/tests/CMakeLists.txt +++ b/src/mlpack/tests/CMakeLists.txt @@ -2,7 +2,6 @@ include(CTest) # mlpack test executable. add_executable(mlpack_test - EXCLUDE_FROM_ALL ${MLPACK_TEST_SRCS} # Tests for neural network code (and reinforcement learning code).