Open
Description
Any Windows developers who can help me figure this out?
When I build the Catch2 unit tests on Windows with MSVC, if I only build the shared library (DLL), I get the following error:
CMake Error at C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:70 (message):
Error running test executable
'D:/mqtt/paho-mqttpp/build/test/unit/Debug/unit_tests.exe':
Result: Exit code 0xc0000135
Output:
Call Stack (most recent call first):
C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake:175 (catch_discover_tests_impl)
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: The command "setlocal [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: "C:\Program Files\CMake\bin\cmake.exe" -D TEST_TARGET=unit_tests -D TEST_EXECUTABLE=D:/mqtt/paho-mqttpp/build/test/unit/Debug/unit_tests.exe -D TEST_EXECUTOR= -D TEST_WORKING_DIR=D:/mqtt/paho-mqttpp/build/test/unit -D TEST_SPEC= -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_LIST=unit_tests_TESTS -D TEST_REPORTER= -D TEST_OUTPUT_DIR= -D TEST_OUTPUT_PREFIX= -D TEST_OUTPUT_SUFFIX= -D TEST_DL_PATHS= -D CTEST_FILE=D:/mqtt/paho-mqttpp/build/test/unit/unit_tests-b12d07c_tests.cmake -P "C:/Program Files (x86)/Catch2/lib/cmake/Catch2/CatchAddTests.cmake" [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmErrorLevel [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: exit /b %1 [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :cmDone [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(166,5): error MSB3073: :VCEnd" exited with code 1. [D:\mqtt\paho-mqttpp\build\test\unit\unit_tests.vcxproj]
It is clearly because the unit test executable doesn't have the path to the Paho C and C++ DLL's. If I manually set the path to include the directories in the build tree where it is building and placing the DLLs, then the error goes away.
(I also don't get the error if I build the libraries as static).
Anyone have any idea how to fix this?