I'm integrating CMocka into my C library project using FetchContent in CMake.
cmake_minimum_required(VERSION 3.31)
project(mylib C)
set(CMAKE_C_STANDARD 11)
add_library(mylib STATIC src/library.c)
target_include_directories(mylib PUBLIC include)
# Download CMocka
include(FetchContent)
FetchContent_Declare(
cmocka
GIT_REPOSITORY https://git.cryptomilk.org/projects/cmocka.git
GIT_TAG cmocka-1.1.5
)
set(CMOCKA_TESTS OFF CACHE BOOL "Disable CMocka self-tests")
FetchContent_MakeAvailable(cmocka)
add_library(cmocka::cmocka ALIAS cmocka)
# Add test
enable_testing()
add_executable(mylib_test test/mylib_test.c)
target_link_libraries(mylib_test PRIVATE mylib cmocka::cmocka)
add_test(NAME MyLibTests COMMAND mylib_test)
My test executable is working fine, but when I run ctest, I see extra tests like:
Start 1: MyLibTests
Start 2: simple_test
Start 3: allocate_module_test
Start 4: assert_macro_test
Start 5: assert_module_test
The additional ones (simple_test, assert_module_test, etc.) are not from my code — they appear to be from CMocka itself
Question
How do I prevent CMocka’s own internal tests from being built and registered with CTest when using FetchContent_MakeAvailable?
What I’ve tried:
I tried to switch them off as well without success.
set(CMOCKA_TESTS OFF CACHE BOOL "Disable CMocka self-tests")
Goal:
Only my own tests should appear in ctest, not CMocka’s internal ones.
WITH_EXAMPLES OFFhelp? See: github.com/OlivierLDff/cmocka-cmake-example