This buildPreset works with Unix Makefiles, but not with Ninja:
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 25,
"patch": 0
},
"configurePresets": [
{
"name": "dev",
"displayName": "developer Ninja build on unix with Coverage",
"description": "NOTE: coverage must be the first to overwrite Release build! CK",
"inherits": ["coverage-Darwin", "ci-Darwin", "doxygen"],
"generator": "Ninja",
"installDir": "${sourceDir}/stagedir",
"cacheVariables": {
"CMAKE_PREFIX_PATH": {
"type": "path",
"value": "${sourceDir}/stagedir"
}
}
}
],
"buildPresets": [
{
"name": "dev",
"configurePreset": "dev",
"configuration": "Coverage",
"targets": ["all", "format-fix", "spell-fix", "test", "coverage", "install"]
}
],
"testPresets": [
{
"name": "dev",
"configurePreset": "dev",
"configuration": "Coverage",
"output": {
"outputOnFailure": true
}
}
],
"workflowPresets": [
{
"name": "dev",
"steps": [
{
"type": "configure",
"name": "dev"
},
{
"type": "build",
"name": "dev"
},
{
"type": "test",
"name": "dev"
}
]
}
]
}
bash-5.2$ cmake --workflow --preset dev
Executing workflow step 1 of 3: configure preset "dev"
Preset CMake variables:
BUILD_MCSS_DOCS:BOOL="TRUE"
BUILD_SHARED_LIBS="ON"
BUILD_TESTING="ON"
CMAKE_BUILD_TYPE="Coverage"
CMAKE_CXX_EXTENSIONS="OFF"
CMAKE_CXX_FLAGS="-fstack-protector-strong -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wformat=2 -Wundef -Werror=float-equal -Wshadow -Wcast-align -Wunused -Wnull-dereference -Wdouble-promotion -Wimplicit-fallthrough -Wextra-semi -Woverloaded-virtual -Wnon-virtual-dtor -Wold-style-cast"
CMAKE_CXX_FLAGS_COVERAGE="-Og -g --coverage"
CMAKE_CXX_STANDARD="20"
CMAKE_CXX_STANDARD_REQUIRED="ON"
CMAKE_EXE_LINKER_FLAGS_COVERAGE="--coverage"
CMAKE_EXPORT_COMPILE_COMMANDS="ON"
CMAKE_INSTALL_PREFIX:PATH="/Users/clausklein/Workspace/cpp/cmake-init-shared-static/stagedir"
CMAKE_PREFIX_PATH:STRING="/Users/clausklein/Workspace/cpp/cmake-init-shared-static/stagedir"
CMAKE_SHARED_LINKER_FLAGS_COVERAGE="--coverage"
ENABLE_COVERAGE="ON"
shared_DEVELOPER_MODE="ON"
-- The CXX compiler identification is Clang 17.0.6
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/opt/llvm/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Found Python3: /usr/local/Frameworks/Python.framework/Versions/3.12/bin/python3.12 (found suitable version "3.12.2", minimum required is "3.6") found components: Interpreter
-- Configuring done (4.1s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage
Executing workflow step 2 of 3: build preset "dev"
[0/10] Running tests...
Test project /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage
Start 1: shared_test
Could not find executable /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/test/shared_test
Looked in the following places:
/Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/test/shared_test
. . .
Unable to find executable: /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/test/shared_test
1/1 Test #1: shared_test ......................***Not Run 0.00 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.00 sec
The following tests FAILED:
1 - shared_test (Not Run)
Errors while running CTest
Output from these tests are in: /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
[0/10] Building CXX object test/CMakeFiles/shared_test.dir/source/shared_test.cpp.o
FAILED: CMakeFiles/test.util
cd /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage && /usr/local/Cellar/cmake/3.29.1/bin/ctest --force-new-ctest-process
[2/10] Fixing spelling errors
Used config files:
1: .codespellrc
[4/10] Generating coverage report
FAILED: CMakeFiles/coverage /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/CMakeFiles/coverage
cd /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage && lcov -c -q -o /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/coverage.info -d /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage --include "/Users/clausklein/Workspace/cpp/cmake-init-shared-static/*" && genhtml --legend -f -q /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/coverage.info -p /Users/clausklein/Workspace/cpp/cmake-init-shared-static -o /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage/coverage_html
geninfo: ERROR: no .gcda files found in /Users/clausklein/Workspace/cpp/cmake-init-shared-static/build/coverage
(use "geninfo --ignore-errors empty ..." to bypass this error)
[6/10] Building CXX object test/CMakeFiles/shared_test.dir/source/shared_test.cpp.o
ninja: build stopped: subcommand failed.
make: *** [coverage] Error 1
bash-5.2$
this works:
gmake -C build/coverage/ clean all test install -j 12
but this not:
ninja -C build/coverage/ clean all test install -j 12
ben.boeckel
(Ben Boeckel (Kitware))
April 10, 2024, 10:39pm
3
How does the ninja build fail? Is there an associated error message?
ClausKlein
(Claus Klein)
April 11, 2024, 10:09am
4
Same result as with build preset.
test must depend from all
install must depend from all
It seems, that this is set for the generated makefiles.
ben.boeckel
(Ben Boeckel (Kitware))
April 11, 2024, 3:33pm
5
Can you please provide a full example that demonstrates the problem? Stripping down the existing project may also find a chunk of logic that is associated with the behavior.
The cmake tutorial step 5 for example:
bash-5.2$ cmake -B build-mk -S . -D CMAKE_INSTALL_PREFIX=/tmp/test
-- The C compiler identification is Clang 17.0.6
-- The CXX compiler identification is Clang 17.0.6
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/local/opt/llvm/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/opt/llvm/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (2.1s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build-mk
bash-5.2$ make -C build-mk all test install
[ 16%] Building CXX object MathFunctions/CMakeFiles/SqrtLibrary.dir/mysqrt.cxx.o
[ 33%] Linking CXX static library libSqrtLibrary.a
[ 33%] Built target SqrtLibrary
[ 50%] Building CXX object MathFunctions/CMakeFiles/MathFunctions.dir/MathFunctions.cxx.o
[ 66%] Linking CXX static library libMathFunctions.a
[ 66%] Built target MathFunctions
[ 83%] Building CXX object CMakeFiles/Tutorial.dir/tutorial.cxx.o
[100%] Linking CXX executable Tutorial
[100%] Built target Tutorial
Running tests...
Test project /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build-mk
Start 1: Runs
1/10 Test #1: Runs ............................. Passed 0.24 sec
Start 2: Usage
2/10 Test #2: Usage ............................ Passed 0.00 sec
Start 3: StandardUse
3/10 Test #3: StandardUse ...................... Passed 0.00 sec
Start 4: Comp4
4/10 Test #4: Comp4 ............................ Passed 0.00 sec
Start 5: Comp9
5/10 Test #5: Comp9 ............................ Passed 0.00 sec
Start 6: Comp5
6/10 Test #6: Comp5 ............................ Passed 0.00 sec
Start 7: Comp7
7/10 Test #7: Comp7 ............................ Passed 0.00 sec
Start 8: Comp25
8/10 Test #8: Comp25 ........................... Passed 0.00 sec
Start 9: Comp-25
9/10 Test #9: Comp-25 .......................... Passed 0.00 sec
Start 10: Comp0.0001
10/10 Test #10: Comp0.0001 ....................... Passed 0.00 sec
100% tests passed, 0 tests failed out of 10
Total Test time (real) = 0.28 sec
Install the project...
-- Install configuration: ""
-- Installing: /tmp/test/lib/libMathFunctions.a
-- Installing: /tmp/test/lib/libSqrtLibrary.a
-- Installing: /tmp/test/include/MathFunctions.h
-- Installing: /tmp/test/bin/Tutorial
-- Installing: /tmp/test/include/TutorialConfig.h
bash-5.2$
bash-5.2$ cmake -G Ninja -B build -S . -D CMAKE_INSTALL_PREFIX=/tmp/test
-- Configuring done (0.1s)
-- Generating done (0.0s)
-- Build files have been written to: /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build
bash-5.2$ ninja -C build all test install
ninja: Entering directory `build'
[0/4] Running tests...
Test project /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build
Start 1: Runs
Could not find executable /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Looked in the following places:
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Unable to find executable: /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
1/2 Test #1: Runs .............................***Not Run 0.00 sec
Start 2: Usage
Could not find executable /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Looked in the following places:
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
/Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Release/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Debug/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/MinSizeRel/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/RelWithDebInfo/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Deployment/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Development/Tutorial
Unable to find executable: /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Tutorial
2/2 Test #2: Usage ............................***Not Run 0.00 sec
0% tests passed, 2 tests failed out of 2
Total Test time (real) = 0.01 sec
The following tests FAILED:
1 - Runs (Not Run)
2 - Usage (Not Run)
Errors while running CTest
Output from these tests are in: /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
[0/4] Linking CXX static library MathFunctions/libMathFunctions.a
FAILED: CMakeFiles/test.util
cd /Users/clausklein/Downloads/cmake/Help/guide/tutorial/Step5/build && /usr/local/bin/ctest --force-new-ctest-process
[2/4] Linking CXX static library MathFunctions/libMathFunctions.a
ninja: build stopped: subcommand failed.
bash-5.2$