so im trying to setup a project, on windows, with cmake
this is what my project structure looks like:
- GameEngine
- .git
- build
- include
- source
- testing
- CMakeLists.txt
the idea is that the "source" directory contain all the .cpp files for the GameEngine library, the "include" directory contain all the header files and the "testing" directory is for testing the library. So it should depend on the GameEngine.dll and GameEngine.lib (on windows).
my top level CMakesLists.txt contain:
cmake_minimum_required(VERSION 2.7)
PROJECT( GameEngine )
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include )
ADD_SUBDIRECTORY( source )
add_subdirectory( testing )
the CMakeLists.txt in the "source" directory contain:
project(GameEngineLib)
file(GLOB src "*.cpp" "../include/*.h")
add_library(${PROJECT_NAME} SHARED ${src})
and the CMakeLists.txt in the "testing" directory contain:
project(Testing)
file(GLOB src "*.h" "*.cpp")
ADD_EXECUTABLE( ${PROJECT_NAME} ${src})
target_link_libraries(${PROJECT_NAME} GameEngineLib)
This all works fine on linux.
when i build it, i get two folders (+ some others), "testing" and "source" and a Makefile that outputs an executable and a .so file.
and the executable already know where to find the .so file, so i can just run without any errors.
The problem comes when i build on windows with visual studio.
Everything works except that the Testing executable, that i get after building the "ALL_BUILD" project, gives me an error saying that it can't find GameEngineLib.dll.
I tried searching around on google on how to fix the problem, but most of the solutions i found just said that you had to manually change your settings in visual studio, to look for the dll, where its located.
but if i was working in a team with multiple developers, i wouldn't really want to have every developer that uses visual studio to have to go in and change settings in the project themselves.
isn't there a way to tell cmake to automatically copy the GameEngineLib.dll to the Tester.exe's folder?