在Windows和CMake的共享库:DLL安装前未找到

问题描述 投票:0回答:1

mylib由库正确的,在目录lib/图书馆,和一个测试套件,在目录test/。这完全是在CMake的控制:

mylib/CMakeLists.txt:
...
add_subdirectory(lib)
add_subdirectory(test)
...


mylib/lib/CMakeLists.txt:
...
add_library(my_lib ${src_files})
...


mylib/test/CMakeLists.txt:
...
add_executable(mytest mytest.c)
target_link_libraries(mytest mylib)

打造步骤是:

mkdir build
cd build
cmake ..
make
ctest         # or make test
make install

Linux下工作,多年以来保持稳定。在Windows10虽然,一个消息窗口弹出,题为“mytest.exe - 系统错误”:“代码执行无法继续,因为中是指mylib.dll未发现重新安装程序可能会解决这个问题。”

否,安装(而不是重新安装)不会是一个很好的解决方案:我需要先测试库之前我安装它(顺便说一句:这不包括响应有点类似的问题提出解决方案,大多数)。

是不是CMake的应该是跨平台工作?什么是微创调整使Windows在上述构建步骤的工作?

windows dll cmake
1个回答
1
投票

在Windows上这样做的正确的方式是填充测试运行的PATH环境变量:

set_tests_properties(your_test_name
  PROPERTIES
      ENVIRONMENT PATH="path-containing-your-dll")

我相信你可以使用生成器表达式,如果path-containing-your-dll是您在您的构建产生伪影的功能。

樱桃在最前面:因为cmake的3.13,变量VS_DEBUGGER_ENVIRONMENT也可以对目标具有在Visual Studio中一个很好的调试行为设置(例如能够直接从Visual调试,而不是通过ctest去申请。)。

© www.soinside.com 2019 - 2024. All rights reserved.