1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Merge pull request #8671 from tomlankhorst/cmake-link-with-platform

Link targets with platform specific libs
This commit is contained in:
Michał Janiszewski
2019-02-07 23:40:46 +01:00
committed by GitHub
5 changed files with 36 additions and 29 deletions

View File

@@ -6,6 +6,8 @@ endif()
project(openrct2 CXX)
include(cmake/platform.cmake)
if (NOT MSVC)
include(FindPkgConfig)
endif ()

11
cmake/platform.cmake Normal file
View File

@@ -0,0 +1,11 @@
# Helpers for linking platform specific libraries
function(target_link_platform_libraries target)
if (APPLE)
target_link_libraries(${target} "-framework Cocoa")
elseif(WIN32)
target_link_libraries(${target} gdi32)
endif ()
endfunction()

View File

@@ -1,35 +1,20 @@
# CMAKE project for openrct2-cli (CLI-only build of OpenRCT2)
cmake_minimum_required(VERSION 3.9)
project(openrct2-cli CXX)
if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
endif ()
# Sources
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
file(GLOB_RECURSE OPENRCT2_CLI_SOURCES
"${CMAKE_CURRENT_LIST_DIR}/*.cpp"
"${CMAKE_CURRENT_LIST_DIR}/*.h"
"${CMAKE_CURRENT_LIST_DIR}/*.hpp")
# Outputs
set (PROJECT openrct2-cli)
project(${PROJECT} CXX)
add_executable(${PROJECT} ${OPENRCT2_CLI_SOURCES})
ipo_set_target_properties(${PROJECT})
target_link_libraries(${PROJECT} "libopenrct2")
# Needed for interactive console
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT} Threads::Threads)
if (APPLE)
target_link_libraries(${PROJECT} "-framework Cocoa")
endif ()
if (WIN32)
target_link_libraries(${PROJECT} gdi32)
endif ()
# Includes
target_include_directories(${PROJECT} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/..")
add_executable(${PROJECT_NAME} ${OPENRCT2_CLI_SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/..")
ipo_set_target_properties(${PROJECT_NAME})
target_link_libraries(${PROJECT_NAME} libopenrct2 Threads::Threads)
target_link_platform_libraries(${PROJECT_NAME})

View File

@@ -48,10 +48,7 @@ ipo_set_target_properties(${PROJECT})
target_link_libraries(${PROJECT} "libopenrct2"
${SDL2_LDFLAGS}
${SPEEX_LDFLAGS})
if (APPLE)
target_link_libraries(${PROJECT} "-framework Cocoa")
endif ()
target_link_platform_libraries(${PROJECT})
if (NOT DISABLE_OPENGL)
if (WIN32)

View File

@@ -112,6 +112,7 @@ set(SAWYERCODING_TEST_SOURCES
)
add_executable(test_sawyercoding ${SAWYERCODING_TEST_SOURCES})
target_link_libraries(test_sawyercoding ${GTEST_LIBRARIES} test-common ${LDL} z)
target_link_platform_libraries(test_sawyercoding)
add_test(NAME sawyercoding COMMAND test_sawyercoding)
# LanguagePack test
@@ -125,6 +126,7 @@ if (UNIX AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "BSD")
set(LDL dl)
endif ()
target_link_libraries(test_languagepack ${GTEST_LIBRARIES} test-common ${LDL} z)
target_link_platform_libraries(test_languagepack)
add_test(NAME languagepack COMMAND test_languagepack)
# INI test
@@ -139,6 +141,7 @@ set(INI_TEST_SOURCES
add_executable(test_ini ${INI_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_ini)
target_link_libraries(test_ini ${GTEST_LIBRARIES} test-common ${LDL} z)
target_link_platform_libraries(test_ini)
add_test(NAME ini COMMAND test_ini)
# String test
@@ -148,6 +151,7 @@ set(STRING_TEST_SOURCES
add_executable(test_string ${STRING_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_string)
target_link_libraries(test_string ${GTEST_LIBRARIES} test-common ${LDL} z)
target_link_platform_libraries(test_string)
add_test(NAME string COMMAND test_string)
# Localisation test
@@ -155,6 +159,7 @@ set(STRING_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/Localisation.cpp")
add_executable(test_localisation ${STRING_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_localisation)
target_link_libraries(test_localisation ${GTEST_LIBRARIES} test-common ${LDL} z)
target_link_platform_libraries(test_localisation)
add_test(NAME localisation COMMAND test_localisation)
if (NOT DISABLE_NETWORK)
@@ -163,6 +168,7 @@ if (NOT DISABLE_NETWORK)
"${CMAKE_CURRENT_LIST_DIR}/TestData.cpp")
SET_CHECK_CXX_FLAGS(test_crypt)
target_link_libraries(test_crypt ${GTEST_LIBRARIES} libopenrct2)
target_link_platform_libraries(test_crypt)
add_test(NAME Crypt COMMAND test_crypt)
endif ()
@@ -171,6 +177,7 @@ add_executable(test_imageimporter "${CMAKE_CURRENT_LIST_DIR}/ImageImporterTests.
"${CMAKE_CURRENT_LIST_DIR}/TestData.cpp")
SET_CHECK_CXX_FLAGS(test_imageimporter)
target_link_libraries(test_imageimporter ${GTEST_LIBRARIES} libopenrct2)
target_link_platform_libraries(test_imageimporter)
add_test(NAME ImageImporter COMMAND test_imageimporter)
# Ride ratings test
@@ -179,6 +186,7 @@ set(RIDE_RATINGS_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/RideRatings.cpp"
add_executable(test_ride_ratings ${RIDE_RATINGS_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_ride_ratings)
target_link_libraries(test_ride_ratings ${GTEST_LIBRARIES} libopenrct2 ${LDL} z)
target_link_platform_libraries(test_ride_ratings)
add_test(NAME ride_ratings COMMAND test_ride_ratings)
# Multi-launch test
@@ -187,6 +195,7 @@ set(MULTILAUNCH_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/MultiLaunch.cpp"
add_executable(test_multilaunch ${MULTILAUNCH_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_multilaunch)
target_link_libraries(test_multilaunch ${GTEST_LIBRARIES} libopenrct2 ${LDL} z)
target_link_platform_libraries(test_multilaunch)
add_test(NAME multilaunch COMMAND test_multilaunch)
# Tile element test
@@ -195,6 +204,7 @@ set(TILE_ELEMENT_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/TileElements.cpp"
add_executable(test_tile_elements ${TILE_ELEMENT_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_tile_elements)
target_link_libraries(test_tile_elements ${GTEST_LIBRARIES} libopenrct2 ${LDL} z)
target_link_platform_libraries(test_tile_elements)
add_test(NAME tile_elements COMMAND test_tile_elements)
if (NOT DISABLE_NETWORK)
@@ -204,6 +214,7 @@ if (NOT DISABLE_NETWORK)
add_executable(test_replays ${REPLAY_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_replays)
target_link_libraries(test_replays ${GTEST_LIBRARIES} libopenrct2 ${LDL} z)
target_link_platform_libraries(test_replays)
add_test(NAME replay_tests COMMAND test_replays)
endif ()
@@ -213,4 +224,5 @@ set(PATHFINDING_TEST_SOURCES "${CMAKE_CURRENT_LIST_DIR}/Pathfinding.cpp"
add_executable(test_pathfinding ${PATHFINDING_TEST_SOURCES})
SET_CHECK_CXX_FLAGS(test_pathfinding)
target_link_libraries(test_pathfinding ${GTEST_LIBRARIES} libopenrct2 ${LDL} z)
target_link_platform_libraries(test_pathfinding)
add_test(NAME pathfinding COMMAND test_pathfinding)