CMake не может скопировать библиотеку в тестовую папку в Visual Studio 2019 - PullRequest
1 голос
/ 02 апреля 2019

У меня следующая структура папок проекта:

project
|-CMakeLists.txt
|
|-src
|  |-mybiglib
|     |-CMakeLists.txt
|
|-tests
   |-mybiglibtest
      |-CMakeLists.txt

У меня есть следующее CMakeLists.txt для проекта модульного тестирования.Библиотека, которую я хочу протестировать, - mybiglib, и она правильно построена в другой CMakeLists.txt

cmake_minimum_required (VERSION 3.10.0)
include(CTest)
enable_testing()
project (mybiglibtest)

message (STATUS "Building project ${PROJECT_NAME}")

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/${CMAKE_BUILD_TYPE}/tests)
set (Boost_USE_STATIC_LIBS ON)
set (Boost_USE_MULTITHREADED ON)
unset (Boost_INCLUDE_DIR CACHE)
unset (Boost_LIBRARY_DIRS CACHE)
set (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
find_package (Boost COMPONENTS unit_test_framework log system REQUIRED)

include_directories (${CMAKE_SOURCE_DIR}/src ${Boost_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})

set (TEST_SRC
  stdafx.cpp
  Test1.cpp
  )

add_executable ( ${PROJECT_NAME} ${TEST_SRC})
target_link_libraries (${PROJECT_NAME} mybiglib ${Boost_LIBRARIES})
add_custom_command (OUTPUT "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/mybiglib.dll" COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:mybiglib> "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")

У меня открыт проект в Visual Studio 2019.

Если я выполню командукоманда Build All, проблема в том, что .dll mybiglib.dll не копируется в папку tests, поэтому тесты не запускаются.

Вместо этого, если я выполню команду Rebuild All, библиотека будеткопируется в тестовую папку, но, очевидно, перестроение все время занимает много времени.

Как я могу скопировать библиотеку в тестовую папку также при сборке, а не только при перестроении?

...