I have complicated project - a big tree, with CMakeLists.txt in each directory.
Once the cmake is done, the Makefile has test target which states
.PHONY test
test:
$(SHELL) -c
"$(CTEST) $(CTEST_FLAGS) --test-dir $(BUILD_PATH)"
The problem is that the tests requires some pre-setup (temp directories to be create, environment variables to set, etc).
So if I were working with a clean make, I would just modify the Makefile to this:
.PHONY test
test:
$(SHELL) -c
"source $(BUILD_PATH)/setup_tests.sh && \
$(CTEST) $(CTEST_FLAGS) --test-dir $(BUILD_PATH)"
But the Makefile is created by cmake and I have no idea where to define such changes.
The root CMakeLists.txt has a function call enable_tests(). The src/tests directory has its own CMakeLists.txt but it just defines a bunch of subdirectories with individual tests.
Could someone point me in the direction on how to customize the execution of specific target in the cmake? Or does the ctest has option to run a shell script before all the tests (The -S looks promising but it requires cmake's language script? It does not work with the .sh).