From 6a3f1dc7a540bc46700fe46c0d225f3d12c15339 Mon Sep 17 00:00:00 2001 From: lukas-heiligenbrunner Date: Fri, 25 Oct 2019 12:24:19 +0200 Subject: [PATCH] included windows build --- CMakeLists.txt | 122 +++++++++++++++++-------------------------------- 1 file changed, 43 insertions(+), 79 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f7c3c2..cf65cc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,21 +5,55 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_BUILD_TYPE Release) # manually set build type (Release / Debug) set(libmethod STATIC) #SHARED / STATIC -set(WinBuild false) +set(WinBuild true) -if (NOT ${WinBuild}) -else() +#set up toolchain + +if (${WinBuild}) + set(LIBSUFFIX .dll) + set(SUFFIX .exe) + + set(CMAKE_SYSTEM_NAME Windows) + set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) + #set(TOOLCHAIN_PREFIX i686-w64-mingw32) + + # cross compilers to use for C and C++ + set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) + set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) + set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) + + # target environment on the build host system + set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX}/sys-root/mingw /usr/lib/gcc/${TOOLCHAIN_PREFIX}/8.3.0) + + + # modify default behavior of FIND_XXX() commands to + # search for headers/libs in the target environment and + # search for programs in the build host environment + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + + # set(CMAKE_CXX_STANDARD_LIBRARIES -lcurl -lpthread -static-libgcc -static-libstdc++ -lcrypto -lssl -lws2_32 -std=c++11 -static -DCURL_STATICLIB) + set(CMAKE_CXX_STANDARD_LIBRARIES "-static-libgcc -static-libstdc++ -lcurl -lpthread -lstdc++ -lwsock32 -lws2_32 ${CMAKE_CSS_STANDARD_LIBRARIES}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -Wl,-Bstatic,--whole-archive -Wl,--no-whole-archive") + # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + # set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS) + add_definitions(-DCURL_STATICLIB) +else () + set(LIBSUFFIX .so) + set(SUFFIX "") endif () + find_package(CURL REQUIRED) -if(CURL_FOUND) +if (CURL_FOUND) message(STATUS "Found CURL version: ${CURL_VERSION_STRING}") message(STATUS "Using CURL include dir(s): ${CURL_INCLUDE_DIRS}") message(STATUS "Using CURL lib(s): ${CURL_LIBRARIES}") # include_directories(${CURL_INCLUDE_DIRS}) -else() +else () message(FATAL_ERROR "Could not find CURLLL") -endif() +endif () include_directories(${CURL_INCLUDE_DIR} inc) add_library(api ${libmethod} @@ -50,9 +84,10 @@ target_link_libraries(iprefresher api logger ${CURL_LIBRARIES}) install(TARGETS iprefresher DESTINATION bin) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/iprefresher.service DESTINATION lib/systemd/system) -SET(CPACK_DEB_COMPONENT_INSTALL 1) IF (UNIX) + SET(CPACK_DEB_COMPONENT_INSTALL 1) + FIND_PROGRAM(RPMBUILD_EXECUTABLE rpmbuild) FIND_PROGRAM(DEB_EXECUTABLE dpkg) @@ -96,75 +131,4 @@ IF (UNIX) DEPENDS ${PROJECT_NAME} COMMENT "Installing ${PROJECT_NAME}") -ENDIF (UNIX) - - - -#todooooooo - - - -cmake_minimum_required(VERSION 3.14) -project(crosscompiletest) - -set(CMAKE_CXX_STANDARD 14) - -set(WinBuild true) - -if (${WinBuild}) - set(LIBSUFFIX .dll) - set(SUFFIX .exe) -else() - set(LIBSUFFIX .so) - set(SUFFIX "") -endif () - -if (${WinBuild}) - set(CMAKE_SYSTEM_NAME Windows) - set(TOOLCHAIN_PREFIX x86_64-w64-mingw32) - #set(TOOLCHAIN_PREFIX i686-w64-mingw32) - - # cross compilers to use for C and C++ - #set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) - #set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) - set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}-gcc) - set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}-g++) - set(CMAKE_RC_COMPILER ${TOOLCHAIN_PREFIX}-windres) - - # target environment on the build host system - set(CMAKE_FIND_ROOT_PATH /usr/${TOOLCHAIN_PREFIX} /usr/lib/gcc/${TOOLCHAIN_PREFIX}/8.3.0) - - - # modify default behavior of FIND_XXX() commands to - # search for headers/libs in the target environment and - # search for programs in the build host environment - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - - set(CMAKE_CXX_STANDARD_LIBRARIES "-static-libgcc -static-libstdc++ -lpthread -lstdc++ -lwsock32 -lws2_32 ${CMAKE_CSS_STANDARD_LIBRARIES}") - set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Bstatic,--whole-archive -Wl,--no-whole-archive") - -endif () - - -find_package(CURL REQUIRED) -if(CURL_FOUND) - message(STATUS "Found CURL version: ${CURL_VERSION_STRING}") - message(STATUS "Using CURL include dir(s): ${CURL_INCLUDE_DIRS}") - message(STATUS "Using CURL lib(s): ${CURL_LIBRARIES}") - # include_directories(${CURL_INCLUDE_DIRS}) -else() - message(FATAL_ERROR "Could not find CURLLL") -endif() - - -add_library(testlib SHARED testlibrary.cpp testlibrary.h) -set_target_properties(testlib PROPERTIES SUFFIX ${LIBSUFFIX}) - - -add_executable(crosscompiletest main.cpp ) -set_target_properties(crosscompiletest PROPERTIES SUFFIX ${SUFFIX}) - -target_link_libraries(crosscompiletest testlib) - +ENDIF (UNIX) \ No newline at end of file