Browse Source

Merge pull request #27 from Mixaill/cmake-2

Make CPack functional on Windows
Ivan Savenko 11 years ago
parent
commit
e78491fda2

+ 1 - 1
AI/BattleAI/CMakeLists.txt

@@ -16,6 +16,6 @@ set_target_properties(BattleAI PROPERTIES ${PCH_PROPERTIES})
 cotire(BattleAI)
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-    install(TARGETS BattleAI DESTINATION ${AI_LIB_DIR})
+    install(TARGETS BattleAI RUNTIME DESTINATION ${AI_LIB_DIR} LIBRARY DESTINATION ${AI_LIB_DIR})
 endif()
 

+ 1 - 1
AI/EmptyAI/CMakeLists.txt

@@ -12,5 +12,5 @@ add_library(EmptyAI SHARED ${emptyAI_SRCS})
 target_link_libraries(EmptyAI vcmi)
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-    install(TARGETS EmptyAI DESTINATION ${AI_LIB_DIR})
+    install(TARGETS EmptyAI RUNTIME DESTINATION ${AI_LIB_DIR} LIBRARY DESTINATION ${AI_LIB_DIR})
 endif()

+ 3 - 1
AI/FuzzyLite/CMakeLists.txt

@@ -50,4 +50,6 @@ add_library(FuzzyLite_lib STATIC ${FuzzyLite_lib_SRCS})
 # all symobls from FuzzyLite exposed to public. This triggers errors
 # when library is checked by analizers for issues
 # Correct solution is either make FuzzyLite symbols hidden or turn lib into dynamic
-SET_TARGET_PROPERTIES(FuzzyLite_lib PROPERTIES COMPILE_FLAGS "-fPIC")
+if(NOT WIN32)
+	SET_TARGET_PROPERTIES(FuzzyLite_lib PROPERTIES COMPILE_FLAGS "-fPIC")
+endif()

+ 1 - 1
AI/StupidAI/CMakeLists.txt

@@ -16,6 +16,6 @@ set_target_properties(StupidAI PROPERTIES ${PCH_PROPERTIES})
 cotire(StupidAI)
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-    install(TARGETS StupidAI DESTINATION ${AI_LIB_DIR})
+    install(TARGETS StupidAI RUNTIME DESTINATION ${AI_LIB_DIR} LIBRARY DESTINATION ${AI_LIB_DIR})
 endif()
 

+ 1 - 1
AI/VCAI/CMakeLists.txt

@@ -19,5 +19,5 @@ set_target_properties(VCAI PROPERTIES ${PCH_PROPERTIES})
 cotire(VCAI)
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-    install(TARGETS VCAI DESTINATION ${AI_LIB_DIR})
+    install(TARGETS VCAI RUNTIME DESTINATION ${AI_LIB_DIR} LIBRARY DESTINATION ${AI_LIB_DIR})
 endif()

+ 36 - 6
CMakeLists.txt

@@ -66,7 +66,17 @@ if (WIN32)
 		set(SYSTEM_LIBS ${SYSTEM_LIBS} iconv)
 	endif()
 
-	set(CMAKE_SHARED_LIBRARY_PREFIX "") #delete lib prefix for dlls
+	#delete lib prefix for dlls
+	set(CMAKE_SHARED_LIBRARY_PREFIX "") 
+
+	if(MINGW)
+		get_filename_component(MINGW_BIN_PATH ${CMAKE_CXX_COMPILER} PATH )
+
+		#copy libwinpthread-*.dll, libgcc_s_*.dll and libstdc++-*.dll to VCMI location
+		set(dep_files ${dep_files} "${MINGW_BIN_PATH}/libwinpthread-*.dll") 
+		set(dep_files ${dep_files} "${MINGW_BIN_PATH}/libgcc_s_*.dll") 
+		set(dep_files ${dep_files} "${MINGW_BIN_PATH}/libstdc++-*.dll") 
+	endif()
 endif()
 
 if(APPLE)
@@ -128,9 +138,10 @@ endif()
 
 if(CMAKE_COMPILER_IS_GNUCXX OR NOT WIN32) #so far all *nix compilers support such parameters
 	if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-		set(CLANG_SPECIFIC_FLAGS "-Wno-mismatched-tags")
+		set(CLANG_SPECIFIC_FLAGS "-Wno-mismatched-tags -Wno-unknown-warning-option")
 	endif()
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -Wextra -Wpointer-arith -Wno-switch -Wno-sign-compare -Wno-unused-parameter -Wuninitialized -Wno-overloaded-virtual ${CLANG_SPECIFIC_FLAGS}")
+
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -Wextra -Wpointer-arith -Wno-strict-aliasing -Wno-switch -Wno-sign-compare -Wno-unused-local-typedefs  -Wno-unused-parameter -Wuninitialized -Wno-overloaded-virtual -Wno-type-limits ${CLANG_SPECIFIC_FLAGS}")
 
 	if(UNIX)
 		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
@@ -221,9 +232,28 @@ if (NOT APPLE)
 endif()
 
 if(WIN32)
-	#TODO: install any additional dll's. This version (may be broken) will copy all dll's including H3 ones
-	#FILE(GLOB dll_files "${CMAKE_BINARY_DIR}/*.dll")
-	#INSTALL(FILES ${dll_files} DESTINATION ${BIN_DIR})
+	file(GLOB dep_files 
+		${dep_files} 
+		"${CMAKE_FIND_ROOT_PATH}/bin/*.dll")
+
+	if (ENABLE_EDITOR OR ENABLE_LAUNCHER)
+		get_target_property(QtCore_location Qt5::Core LOCATION)
+		get_filename_component(Qtbin_folder ${QtCore_location} PATH)
+		file(GLOB dep_files 
+			${dep_files}
+			${Qtbin_folder}/Qt5Core.dll
+			${Qtbin_folder}/Qt5Gui.dll
+			${Qtbin_folder}/Qt5Widgets.dll
+			${Qtbin_folder}/icu*.dll)
+	endif()
+
+	if (ENABLE_LAUNCHER)
+		file(GLOB dep_files 
+			${dep_files} 
+			${Qtbin_folder}/Qt5Network.dll)
+	endif()
+
+	install(FILES ${dep_files} DESTINATION ${BIN_DIR})
 elseif(APPLE)
 else()
 	#install icons and desktop file on Linux

+ 1 - 1
lib/CMakeLists.txt

@@ -143,5 +143,5 @@ set_target_properties(vcmi PROPERTIES ${PCH_PROPERTIES})
 cotire(vcmi)
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-	install(TARGETS vcmi DESTINATION ${LIB_DIR})
+	install(TARGETS vcmi RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR})
 endif()

+ 1 - 1
lib/minizip/CMakeLists.txt

@@ -16,5 +16,5 @@ set_target_properties(minizip PROPERTIES XCODE_ATTRIBUTE_LD_DYLIB_INSTALL_NAME "
 target_link_libraries(minizip ${ZLIB_LIBRARIES})
 
 if (NOT APPLE) # Already inside vcmiclient bundle
-    install(TARGETS minizip DESTINATION ${LIB_DIR})
+    install(TARGETS minizip RUNTIME DESTINATION ${LIB_DIR} LIBRARY DESTINATION ${LIB_DIR})
 endif()