452 lines
16 KiB
CMake
452 lines
16 KiB
CMake
#
|
|
# If the user specifies -DCMAKE_BUILD_TYPE on the command line, take their definition
|
|
# and dump it in the cache along with proper documentation,
|
|
# otherwise set CMAKE_BUILD_TYPE to Release prior to calling PROJECT()
|
|
#
|
|
|
|
if( DEFINED CMAKE_BUILD_TYPE )
|
|
set( CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Set to either \"Release\" or \"Debug\"" )
|
|
else()
|
|
set( CMAKE_BUILD_TYPE Release CACHE STRING "Set to either \"Release\" or \"Debug\"" )
|
|
endif()
|
|
|
|
# message( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )
|
|
|
|
mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
|
|
project (behaviac)
|
|
|
|
message( STATUS "MSVC=${MSVC}" )
|
|
|
|
# if (MSVC)
|
|
# cmake_minimum_required (VERSION 3.3)
|
|
# else()
|
|
# cmake_minimum_required (VERSION 2.8)
|
|
# endif()
|
|
|
|
cmake_minimum_required (VERSION 2.8)
|
|
|
|
# SET(CMAKE_USE_RELATIVE_PATHS ON)
|
|
|
|
# set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Profile" CACHE STRING "" FORCE)
|
|
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
|
|
|
|
set (BEHAVIAC_PACKAGE_VERSION 3.6.39)
|
|
|
|
#option( BUILD_SHARED_LIBS "set to OFF to build static libraries" ON )
|
|
SET(BUILD_SHARED_LIBS ON CACHE BOOL "set to OFF to build static libraries")
|
|
|
|
# configure a header file to pass some of the CMake settings
|
|
# to the source code
|
|
#CONFIGURE_FILE ("${PROJECT_SOURCE_DIR}/Config.h.in" "${PROJECT_BINARY_DIR}/Config.h")
|
|
|
|
file(GLOB_RECURSE BEHAVIAC_INC "${PROJECT_SOURCE_DIR}/inc/*.*")
|
|
file(GLOB_RECURSE BEHAVIAC_SRC "${PROJECT_SOURCE_DIR}/src/*.*")
|
|
|
|
# exclude_dir = "/exclude_dir/"
|
|
macro (ExcludeDir src_files exclude_dir)
|
|
foreach (TMP_PATH ${src_files})
|
|
string (FIND ${TMP_PATH} ${exclude_dir} EXCLUDE_DIR_FOUND)
|
|
if (NOT ${EXCLUDE_DIR_FOUND} EQUAL -1)
|
|
list (REMOVE_ITEM ${src_files} ${TMP_PATH})
|
|
endif ()
|
|
endforeach(TMP_PATH)
|
|
endmacro()
|
|
|
|
|
|
|
|
# usage: GroupSources("${PROJECT_SOURCE_DIR}/inc/", "inc")
|
|
macro(GroupSources dir prefix)
|
|
# file(GLOB_RECURSE elements RELATIVE ${dir} *.h *.hpp *.c *.cpp *.cc)
|
|
file(GLOB_RECURSE elements RELATIVE ${dir} *.*)
|
|
|
|
foreach(element ${elements})
|
|
# Extract filename and directory
|
|
get_filename_component(element_name ${element} NAME)
|
|
get_filename_component(element_dir ${element} DIRECTORY)
|
|
|
|
if (NOT ${element_dir} STREQUAL "")
|
|
# If the file is in a subdirectory use it as source group.
|
|
# Use the full hierarchical structure to build source_groups.
|
|
string(REPLACE "/" "\\" group_name ${element_dir})
|
|
source_group("${prefix}\\${group_name}" FILES ${dir}/${element})
|
|
else()
|
|
# If the file is in the root directory, place it in the root source_group.
|
|
source_group("${prefix}\\" FILES ${dir}/${element})
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|
|
|
|
if (MSVC)
|
|
GroupSources("${PROJECT_SOURCE_DIR}/inc/" "inc")
|
|
GroupSources("${PROJECT_SOURCE_DIR}/src/" "src")
|
|
endif()
|
|
|
|
|
|
# source_group(inc FILES ${BEHAVIAC_INC})
|
|
# source_group(src FILES ${BEHAVIAC_SRC})
|
|
|
|
# add the binary tree to the search path for include files
|
|
# so that we will find TutorialConfig.h
|
|
include_directories ("${PROJECT_SOURCE_DIR}/inc")
|
|
|
|
if( DEFINED BEHAVIAC_VERSION_MODE )
|
|
set(BEHAVIAC_VERSION_MODE ${BEHAVIAC_VERSION_MODE} CACHE STRING "version mode, force to use dev/release version or default(dev version on Debug config and release version on Release config)")
|
|
else()
|
|
set(BEHAVIAC_VERSION_MODE "Default" CACHE STRING "version mode, force to use dev/release version or default(dev version on Debug config and release version on Release config)")
|
|
endif()
|
|
|
|
SET_PROPERTY(CACHE BEHAVIAC_VERSION_MODE PROPERTY STRINGS Default ForceUseDev ForeUseRelease)
|
|
if(NOT(DEFINED BEHAVIAC_VERSION_MODE_LAST))
|
|
set(BEHAVIAC_VERSION_MODE_LAST "NotAnOption" CACHE STRING "last version mode")
|
|
MARK_AS_ADVANCED (FORCE BEHAVIAC_VERSION_MODE_LAST)
|
|
endif()
|
|
|
|
|
|
# set(BEHAVIAC_VERSION_MODE "ForeUseRelease" CACHE STRING "version mode)" FORCE)
|
|
|
|
if(NOT (${BEHAVIAC_VERSION_MODE} MATCHES ${BEHAVIAC_VERSION_MODE_LAST}))
|
|
set(BEHAVIAC_VERSION_MODE_LAST ${BEHAVIAC_VERSION_MODE} CACHE STRING "Updating version mode option" FORCE)
|
|
endif()
|
|
|
|
set (BEHAVIAC_RELEASE_CUSTOMIZED 0)
|
|
set (BEHAVIAC_RELEASE_ON 0)
|
|
|
|
if(${BEHAVIAC_VERSION_MODE} MATCHES "ForceUseDev")
|
|
set (BEHAVIAC_RELEASE_CUSTOMIZED 1)
|
|
set (BEHAVIAC_RELEASE_ON 0)
|
|
endif()
|
|
if(${BEHAVIAC_VERSION_MODE} MATCHES "ForeUseRelease")
|
|
set (BEHAVIAC_RELEASE_CUSTOMIZED 1)
|
|
set (BEHAVIAC_RELEASE_ON 1)
|
|
endif()
|
|
|
|
# set (LINKER_SCRIPT "")
|
|
|
|
if (CMAKE_GENERATOR MATCHES "Xcode")
|
|
message( STATUS "XCODE = ${XCODE}" )
|
|
endif()
|
|
|
|
# if(MSVC OR (CMAKE_GENERATOR MATCHES "Xcode"))
|
|
if(MSVC OR XCODE)
|
|
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS
|
|
$<$<CONFIG:Debug>:_DEBUG>
|
|
$<$<CONFIG:Release>:NDEBUG>
|
|
)
|
|
|
|
if (XCODE)
|
|
set(XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS[variant=Debug] "_DEBUG")
|
|
set(XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS[variant=Release] "NDEBUG")
|
|
endif()
|
|
else()
|
|
if( CMAKE_BUILD_TYPE MATCHES Debug )
|
|
#add_definitions( "-DDEBUG" )
|
|
add_definitions( "-D_DEBUG" )
|
|
else()
|
|
add_definitions( "-DNDEBUG" )
|
|
endif()
|
|
endif()
|
|
|
|
|
|
if(BEHAVIAC_RELEASE_ON)
|
|
|
|
if (MSVC)
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Gy /GL")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS} /OPT:ICF /OPT:REF /LTCG")
|
|
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS} /OPT:ICF /OPT:REF /LTCG")
|
|
else()
|
|
include( CheckCXXCompilerFlag )
|
|
check_cxx_compiler_flag( -flto GXX_HAS_LTO_FLAG )
|
|
|
|
message( STATUS "GXX_HAS_LTO_FLAG = ${GXX_HAS_LTO_FLAG}" )
|
|
|
|
if( CMAKE_BUILD_TYPE MATCHES Release AND GXX_HAS_LTO_FLAG )
|
|
find_program(CMAKE_GCC_AR NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
|
find_program(CMAKE_GCC_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
|
find_program(CMAKE_GCC_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
|
|
|
|
if( CMAKE_GCC_AR AND CMAKE_GCC_NM AND CMAKE_GCC_RANLIB )
|
|
message( STATUS "SET LTO Flags" )
|
|
|
|
# set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fno-fat-lto-objects -O3 -ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden" )
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -O3" )
|
|
|
|
check_cxx_compiler_flag( -fno-fat-lto-objects GXX_HAS_NO_FAT_LTO_FLAG )
|
|
|
|
message( STATUS "GXX_HAS_NO_FAT_LTO_FLAG = ${GXX_HAS_NO_FAT_LTO_FLAG}" )
|
|
|
|
if (GXX_HAS_NO_FAT_LTO_FLAG)
|
|
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-fat-lto-objects" )
|
|
endif()
|
|
|
|
set( CMAKE_AR "${CMAKE_GCC_AR}" )
|
|
set( CMAKE_NM "${CMAKE_GCC_NM}" )
|
|
set( CMAKE_RANLIB "${CMAKE_GCC_RANLIB}" )
|
|
|
|
# set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--gc-sections")
|
|
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
|
|
else()
|
|
message( WARNING "GCC indicates LTO support, but binutils wrappers could not be found. Disabling LTO." )
|
|
endif()
|
|
endif()
|
|
|
|
# -fipa-icf
|
|
# -finline-limit=64
|
|
# -fno-exceptions -fno-rtti
|
|
# -fwhole-program
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections -fvisibility=hidden -O3 -flto")
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -flto -fno-fat-lto-objects")
|
|
# set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--gc-sections -flto")
|
|
# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -flto")
|
|
# set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -flto")
|
|
|
|
# find_package(Gold)
|
|
|
|
# if (GOLD_FOUND)
|
|
# SET(LINKER_SCRIPT -fuse-ld=gold -Wl,--icf=safe)
|
|
# endif()
|
|
endif()
|
|
endif()
|
|
|
|
|
|
SET(BUILD_USE_64BITS OFF CACHE BOOL "set to ON to use 64 bits")
|
|
|
|
if (MSVC)
|
|
if (CMAKE_GENERATOR MATCHES "64")
|
|
SET(BUILD_USE_64BITS ON CACHE BOOL "CMAKE_GENERATOR is for 64 bit, set to ON accordingly" FORCE)
|
|
endif()
|
|
else()
|
|
# SET(BUILD_USE_64BITS ON CACHE BOOL "CMAKE_GENERATOR is for 64 bit, set to ON accordingly" FORCE)
|
|
endif()
|
|
|
|
if (BUILD_USE_64BITS)
|
|
if (MSVC)
|
|
if (NOT CMAKE_GENERATOR MATCHES "64")
|
|
#
|
|
message( SEND_ERROR "You need to specify '${CMAKE_GENERATOR} Win64' to generate project file for 64 bit" )
|
|
endif()
|
|
else()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64")
|
|
# set (CMAKE_OSX_ARCHITECTURES x86_64)
|
|
endif()
|
|
endif()
|
|
|
|
message( STATUS "CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}" )
|
|
message( STATUS "BUILD_USE_64BITS = ${BUILD_USE_64BITS}" )
|
|
|
|
message( STATUS "CMAKE_GENERATOR = ${CMAKE_GENERATOR}" )
|
|
|
|
if (MSVC)
|
|
# message( STATUS "MSVC" )
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
|
|
endif()
|
|
|
|
if (VC_MDD_ANDROID)
|
|
message( STATUS "VC_MDD_ANDROID" )
|
|
cmake_minimum_required (VERSION 3.4)
|
|
endif()
|
|
|
|
set (BEHAVIAC_ANDROID_ON 0)
|
|
|
|
# demo of the variables being set when VCMDDAndroid is targeted
|
|
if(CMAKE_GENERATOR MATCHES "Visual Studio 14" AND CMAKE_SYSTEM_NAME MATCHES "VCMDDAndroid")
|
|
# message(STATUS "VCMDDAndroid")
|
|
set (BEHAVIAC_ANDROID_ON 1)
|
|
endif()
|
|
|
|
set (BEHAVIAC_ANDROID_STUDIO 0)
|
|
|
|
if(CMAKE_GENERATOR MATCHES "Ninja" AND CMAKE_SYSTEM_NAME MATCHES "Android")
|
|
set (BEHAVIAC_ANDROID_STUDIO 1)
|
|
endif()
|
|
|
|
set (COMPILE_POSTFIX "")
|
|
|
|
|
|
if(MSVC OR BEHAVIAC_ANDROID_ON)
|
|
message(STATUS "set msvc flags")
|
|
# Force to always compile with W4
|
|
# if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
|
# STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
# else()
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
|
# endif()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
|
|
|
#warning treated as error
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
|
#multiple processor compilation
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /EHs")
|
|
set (COMPILE_POSTFIX "msvc")
|
|
|
|
# hide CMAKE_BUILD_TYPE on msvc
|
|
mark_as_advanced(CMAKE_BUILD_TYPE)
|
|
|
|
if (BEHAVIAC_ANDROID_ON)
|
|
message(STATUS "set msvc flags for android")
|
|
set (BUILD_SHARED_LIBS OFF CACHE BOOL "set to OFF to build static libraries")
|
|
mark_as_advanced(BUILD_SHARED_LIBS)
|
|
set (COMPILE_POSTFIX "msvc_android")
|
|
endif()
|
|
else()
|
|
# Update if necessary
|
|
set (BUILD_SHARED_LIBS OFF CACHE BOOL "set to OFF to build static libraries" FORCE)
|
|
mark_as_advanced(BUILD_SHARED_LIBS)
|
|
mark_as_advanced(CMAKE_GNUtoMS)
|
|
|
|
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
|
|
message(STATUS "set gcc flags")
|
|
find_package(Threads REQUIRED)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
|
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Woverloaded-virtual -Wnon-virtual-dtor -Wfloat-equal -Wno-unused-local-typedefs -finput-charset=UTF-8 ")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Woverloaded-virtual -Wnon-virtual-dtor -Wfloat-equal -Wno-unused-local-typedefs -finput-charset=UTF-8 -std=gnu++1z ") #azw
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj")
|
|
endif()
|
|
|
|
# if (BEHAVIAC_ANDROID_STUDIO)
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mxgot")
|
|
# endif()
|
|
|
|
# if(CMAKE_GENERATOR STREQUAL Xcode)
|
|
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-private-field")
|
|
# endif()
|
|
|
|
set (COMPILE_POSTFIX "gcc")
|
|
endif()
|
|
|
|
message( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )
|
|
message( STATUS "BUILD_ENABLE_LUA = ${BUILD_ENABLE_LUA}" )
|
|
message( STATUS "BEHAVIAC_VERSION_MODE = ${BEHAVIAC_VERSION_MODE}" )
|
|
message( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )
|
|
# message( STATUS "BEHAVIAC_VERSION = ${BEHAVIAC_VERSION}" )
|
|
if(MSVC OR BEHAVIAC_ANDROID_ON)
|
|
message( STATUS "Config = Debug|Release" )
|
|
else()
|
|
message( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )
|
|
endif()
|
|
# MESSAGE( STATUS "CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}" )
|
|
|
|
configure_file (
|
|
"${PROJECT_SOURCE_DIR}/build/_config.h.in"
|
|
"${PROJECT_SOURCE_DIR}/inc/behaviac/common/_config.h"
|
|
NEWLINE_STYLE WIN32
|
|
)
|
|
|
|
if (NOT BEHAVIAC_ANDROID_STUDIO)
|
|
set(LIB_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
|
|
endif()
|
|
set(BINARY_PATH ${PROJECT_SOURCE_DIR}/bin)
|
|
|
|
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BINARY_PATH} )
|
|
if (NOT BEHAVIAC_ANDROID_STUDIO)
|
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIB_OUTPUT_PATH} )
|
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIB_OUTPUT_PATH} )
|
|
endif()
|
|
|
|
set( CMAKE_DEBUG_POSTFIX "_${COMPILE_POSTFIX}_debug" )
|
|
set( CMAKE_RELEASE_POSTFIX "_${COMPILE_POSTFIX}_release" )
|
|
|
|
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
|
|
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
|
|
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BINARY_PATH} )
|
|
|
|
if (NOT BEHAVIAC_ANDROID_STUDIO)
|
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB_OUTPUT_PATH} )
|
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB_OUTPUT_PATH} )
|
|
endif()
|
|
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
|
|
|
|
set( SHARED_LIB "" )
|
|
|
|
if (BEHAVIAC_ANDROID_STUDIO)
|
|
set( SHARED_LIB "SHARED" )
|
|
endif()
|
|
|
|
add_library(libbehaviac ${SHARED_LIB} ${BEHAVIAC_INC} ${BEHAVIAC_SRC} ${LINKER_SCRIPT})
|
|
|
|
set_target_properties(libbehaviac PROPERTIES PREFIX "")
|
|
# set_target_properties(libbehaviac PROPERTIES OUTPUT_NAME_DEBUG libbehaviac${${CMAKE_DEBUG_POSTFIX}}
|
|
# set_target_properties(libbehaviac PROPERTIES OUTPUT_NAME_RELEASE libbehaviac${${CMAKE_RELEASE_POSTFIX}}
|
|
|
|
set_target_properties(libbehaviac PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
|
|
set_target_properties(libbehaviac PROPERTIES RELEASE_POSTFIX ${CMAKE_RELEASE_POSTFIX})
|
|
|
|
# foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
|
|
# string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
|
|
# set_target_properties(libbehaviac PROPERTIES
|
|
# ${OUTPUTCONFIG}_OUTPUT_NAME libBehaviac_${OUTPUTCONFIG}
|
|
# )
|
|
# # ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB_OUTPUT_PATH}
|
|
# # LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB_OUTPUT_PATH}
|
|
# # RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BINARY_PATH})
|
|
# endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
|
|
|
|
if (BEHAVIAC_ANDROID_STUDIO)
|
|
target_link_libraries(libbehaviac log android)
|
|
endif()
|
|
|
|
# Cmake comes with a builtin add_definitions command to add definitions to
|
|
# everything in the current directory, but we need to add definitions to
|
|
# targets.
|
|
function (add_target_definitions target)
|
|
get_target_property(defs ${target} COMPILE_DEFINITIONS)
|
|
if (defs MATCHES "NOTFOUND")
|
|
set(defs "")
|
|
endif ()
|
|
foreach (def ${defs} ${ARGN})
|
|
list(APPEND deflist ${def})
|
|
endforeach ()
|
|
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS "${deflist}")
|
|
endfunction ()
|
|
|
|
# if (XCODE)
|
|
# set_target_properties(libbehaviac PROPERTIES XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS[variant=Debug] "_DEBUG")
|
|
# set_target_properties(libbehaviac PROPERTIES XCODE_ATTRIBUTE_GCC_PREPROCESSOR_DEFINITIONS[variant=Release] "NDEBUG")
|
|
# endif()
|
|
|
|
if( BUILD_SHARED_LIBS )
|
|
# SET_TARGET_PROPERTIES(libbehaviac PROPERTIES
|
|
# COMPILE_DEFINITIONS "BEHAVIACDLL_EXPORTS")
|
|
message( STATUS "build shared libs" )
|
|
add_target_definitions(libbehaviac "BEHAVIACDLL_EXPORTS" "BEHAVIAC_DLL")
|
|
else()
|
|
message( STATUS "build static libs" )
|
|
endif()
|
|
|
|
# if (NOT BEHAVIAC_ANDROID_STUDIO)
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/test/btunittest")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/test/btremotetest")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/test/demo_running")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/test/usertest")
|
|
|
|
# if (MSVC)
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/test/btperformance")
|
|
# if (EXISTS "${PROJECT_SOURCE_DIR}/example/spaceship")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/example/spaceship")
|
|
# endif()
|
|
# endif()
|
|
|
|
# #add_subdirectory ("${PROJECT_SOURCE_DIR}/example/airbattledemo")
|
|
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_1/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_1_1/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_1_2/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_2/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_3/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_4/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_5/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_6/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_7/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_8/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_9/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_10/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_11/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_12/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_13/cpp")
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_14/cpp")
|
|
# else()
|
|
# add_subdirectory ("${PROJECT_SOURCE_DIR}/tutorials/tutorial_11/cpp")
|
|
# endif()
|
|
|