summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml23
-rw-r--r--CMakeLists.txt16
-rw-r--r--test/.gitignore4
-rw-r--r--test/CMakeLists.txt55
4 files changed, 65 insertions, 33 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fce6c2d..0ddf19a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -59,7 +59,7 @@ jobs:
- name: Build test GDNative library
run: |
- cd test && cmake -DCMAKE_BUILD_TYPE=Release .
+ cd test && cmake -DCMAKE_BUILD_TYPE=Release -DGODOT_HEADERS_PATH="../godot-headers" -DCPP_BINDINGS_PATH=".." .
make -j $(nproc)
linux-cmake-ninja:
@@ -83,7 +83,7 @@ jobs:
- name: Build test GDNative library
run: |
- cd test && cmake -DCMAKE_BUILD_TYPE=Release -GNinja .
+ cd test && cmake -DCMAKE_BUILD_TYPE=Release -DGODOT_HEADERS_PATH="../godot-headers" -DCPP_BINDINGS_PATH=".." -GNinja .
cmake --build . -j $(nproc)
windows-msvc:
@@ -119,6 +119,25 @@ jobs:
name: godot-cpp-windows-msvc2019-x86_64-release
path: bin/libgodot-cpp.windows.release.64.lib
if-no-files-found: error
+
+ windows-msvc-cmake:
+ name: Build (Windows, MSVC, CMake)
+ runs-on: windows-2019
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - name: Build godot-cpp
+ run: |
+ cmake -DCMAKE_BUILD_TYPE=Release -G"Visual Studio 16 2019" .
+ cmake --build .
+
+ - name: Build test GDNative library
+ run: |
+ cd test && cmake -DCMAKE_BUILD_TYPE=Release -DGODOT_HEADERS_PATH="../godot-headers" -DCPP_BINDINGS_PATH=".." -G"Visual Studio 16 2019" .
+ cmake --build .
windows-mingw:
name: Build (Windows, MinGW)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 801b362..dca7a7f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,6 +39,17 @@ cmake_minimum_required(VERSION 3.6)
option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON)
+set(BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BUILD_PATH}")
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BUILD_PATH}")
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${BUILD_PATH}")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
+SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
+SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BUILD_PATH}")
+SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${BUILD_PATH}")
+
# Default build type is Debug in the SConstruct
if(CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE Debug)
@@ -68,8 +79,8 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
endif(CMAKE_BUILD_TYPE MATCHES Debug)
- # Disable conversion warning, trunkation, unreferenced var, signed missmatch
- set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /wd4244 /wd4305 /wd4101 /wd4018 /wd4267")
+ # Disable conversion warning, truncation, unreferenced var, signed missmatch, different type
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /wd4244 /wd4305 /wd4101 /wd4018 /wd4267 /wd4099")
# Todo: Check if needed.
add_definitions(-DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_WARNINGS)
@@ -171,7 +182,6 @@ target_include_directories(${PROJECT_NAME}
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS})
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
-set_property(TARGET ${PROJECT_NAME} PROPERTY ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
# Create the correct name (godot.os.build_type.system_bits)
diff --git a/test/.gitignore b/test/.gitignore
index e0b51db..c6d8394 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -1,3 +1,7 @@
+# Generated directories with binaries
+build
+bin
+
# Godot 4+ specific ignores
.godot/
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e76d929..05422bd 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,18 +1,17 @@
project(godot-cpp-test)
cmake_minimum_required(VERSION 3.6)
-# Local dependency paths, adapt them to your setup
-set(GODOT_HEADERS_PATH ../godot-headers/)
-set(CPP_BINDINGS_PATH ../)
+set(GODOT_HEADERS_PATH ../godot-headers/ CACHE STRING "Path to Godot headers")
+set(CPP_BINDINGS_PATH ../ CACHE STRING "Path to C++ bindings")
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- set(TARGET_PATH x11)
+ set(TARGET_PATH x11)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- set(TARGET_PATH win64)
+ set(TARGET_PATH win64)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
- set(TARGET_PATH osx)
+ set(TARGET_PATH osx)
else()
- message(FATAL_ERROR "Not implemented support for ${CMAKE_SYSTEM_NAME}")
+ message(FATAL_ERROR "Not implemented support for ${CMAKE_SYSTEM_NAME}")
endif()
# Change the output directory to the bin directory
@@ -37,7 +36,8 @@ set(GODOT_LINKER_FLAGS )
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
- set(GODOT_COMPILE_FLAGS "/EHsc /WX") # /GF /MP
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /EHsc /WX") # /GF /MP
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /DTYPED_METHOD_BIND")
if(CMAKE_BUILD_TYPE MATCHES Debug)
set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /MDd") # /Od /RTC1 /Zi
@@ -101,10 +101,10 @@ file(GLOB_RECURSE HEADERS include/*.h**)
add_library(${PROJECT_NAME} SHARED ${SOURCES} ${HEADERS})
target_include_directories(${PROJECT_NAME} SYSTEM
- PRIVATE
- ${CPP_BINDINGS_PATH}/include
+ PRIVATE
+ ${CPP_BINDINGS_PATH}/include
${CPP_BINDINGS_PATH}/gen/include
- ${GODOT_HEADERS_PATH}
+ ${GODOT_HEADERS_PATH}
)
# Create the correct name (godot.os.build_type.system_bits)
@@ -112,35 +112,36 @@ target_include_directories(${PROJECT_NAME} SYSTEM
set(BITS 32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(BITS 64)
+ set(BITS 64)
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
if(CMAKE_BUILD_TYPE MATCHES Debug)
- set(GODOT_CPP_BUILD_TYPE Debug)
+ set(GODOT_CPP_BUILD_TYPE Debug)
else()
- set(GODOT_CPP_BUILD_TYPE Release)
+ set(GODOT_CPP_BUILD_TYPE Release)
endif()
string(TOLOWER ${CMAKE_SYSTEM_NAME} SYSTEM_NAME)
string(TOLOWER ${GODOT_CPP_BUILD_TYPE} BUILD_TYPE)
if(ANDROID)
- # Added the android abi after system name
- set(SYSTEM_NAME ${SYSTEM_NAME}.${ANDROID_ABI})
+ # Added the android abi after system name
+ set(SYSTEM_NAME ${SYSTEM_NAME}.${ANDROID_ABI})
endif()
if(CMAKE_VERSION VERSION_GREATER "3.13")
- target_link_directories(${PROJECT_NAME}
- PRIVATE
- ${CPP_BINDINGS_PATH}/bin/
- )
- target_link_libraries(${PROJECT_NAME}
- godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}$<$<NOT:$<PLATFORM_ID:Android>>:.${BITS}>
- )
+ target_link_directories(${PROJECT_NAME}
+ PRIVATE
+ ${CPP_BINDINGS_PATH}/bin/
+ )
+
+ target_link_libraries(${PROJECT_NAME}
+ godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}$<$<NOT:$<PLATFORM_ID:Android>>:.${BITS}>
+ )
else()
- target_link_libraries(${PROJECT_NAME}
- ${CPP_BINDINGS_PATH}/bin/libgodot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}$<$<NOT:$<PLATFORM_ID:Android>>:.${BITS}>.a
- )
+ target_link_libraries(${PROJECT_NAME}
+ ${CPP_BINDINGS_PATH}/bin/libgodot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}$<$<NOT:$<PLATFORM_ID:Android>>:.${BITS}>.a
+ )
endif()
# Add the compile flags
@@ -148,5 +149,3 @@ set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME "gdexample")
-
-