CMake TARGET_RUNTIME_DLL_DIRS for CTest
Building Windows shared libraries in general creates DLLs whose directory must be on environment variable PATH when the executable target is run. Windows error code -1073741515 corresponding to hex error code 0xc0000135 emits when the necessary DLLs are not in the program’s working directory or on PATH. This will make CTest tests fail with error code 135.
The CMake generator expression TARGET_RUNTIME_DLL_DIRS along with test property ENVIRONMENT_MODIFICATION can be used to set the PATH environment variable for the test, gathering all the directories of the DLLs CMake knows the target needs.
set_property(TEST adder PROPERTY ENVIRONMENT_MODIFICATION PATH=path_list_append:$<TARGET_RUNTIME_DLL_DIRS:main>)
in this minimal example CMakeLists.txt uses the properties above to work correctly.