Проект с тестами не видит основную библиотеку
Вот очень упрощенная структура моего проекта:
MI
|
| - Core
| | foo.h
| | foo.cpp
| | foo_test.cpp
| | CMakeLists.txt
|
| - Test
| | CMakeLists.txt
|
| - CMakeLists.txt
При сборке проекта получается следующее:
MI
| - _build
| | - Core
| | - Debug
| | Cored.dll
| | Cored.lib
| | - Release
| | Core.dll
| | Core.lib
|
| | - Test
| | - Debug
| | Test.exe
| | - Release
| | Test.exe
|
| - Core
| | foo.h
| | foo.cpp
| | foo_test.cpp
| | CMakeLists.txt
|
| - Test
| | CMakeLists.txt
|
| - CMakeLists.txt
Проблема в том, что при запуске текстов в студии (MI/_build/Test/Debug/Test.exe) не хватает библиотеки Core.dll. Как можно решить эту ситуацию? Нужно копировать фалы библиотеки? Или, может, библиотеку и тесты в одну папку помещать? В качестве ответа также можно ссылку на какой-нибудь проект, где можно посмотреть правильную реализацию. Если нужны какие-то cmake файлы, я дополню вопрос, их много и они все связаны.
Ответы (1 шт):
Сталкивался с подобной проблемой, но только на Linux. Помогло вот это. Там сначала создается статическая библиотека на основе исходного кода программы (APP_LIB_NAME)
set(APP_LIB_SOURCE
IFoo.cpp
Foo.cpp
Bar.cpp
)
add_library(${APP_LIB_NAME} ${APP_LIB_SOURCE})
, которая потом используется при компиляции тестов:
target_link_libraries(${TEST_APP_NAME} ${APP_LIB_NAME} ${CPPUTEST_LDFLAGS})