1 Star 0 Fork 0

zengyuhang1994/pygmo2

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 6.48 KB
一键复制 编辑 原始数据 按行查看 历史
Francesco Biscani 提交于 2021-08-02 16:10 . Modernise the CMake support.
# NOTE: FindPython3 supported since CMake 3.12.0, but we use
# options that appear in 3.17.
cmake_minimum_required(VERSION 3.17.0)
# Set default build type to "Release".
# NOTE: this should be done before the project command since the latter can set
# CMAKE_BUILD_TYPE itself (it does so for nmake).
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif()
project(pygmo VERSION 2.18.0 LANGUAGES CXX C)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/yacma")
message(STATUS "System name: ${CMAKE_SYSTEM_NAME}")
message(STATUS "pygmo version: ${pygmo_VERSION}")
option(PYGMO_ENABLE_IPO "Enable IPO (requires compiler support)." OFF)
mark_as_advanced(PYGMO_ENABLE_IPO)
# Run the YACMA compiler setup.
include(YACMACompilerLinkerSettings)
# Assemble the flags.
set(PYGMO_CXX_FLAGS_DEBUG ${YACMA_CXX_FLAGS} ${YACMA_CXX_FLAGS_DEBUG})
set(PYGMO_CXX_FLAGS_RELEASE ${YACMA_CXX_FLAGS})
if(YACMA_COMPILER_IS_MSVC)
include(CheckCXXCompilerFlag)
# Disable the idiotic minmax macros on MSVC (both cl and clang-cl).
# Also, enable the bigobj flag and the WIN32_LEAN_AND_MEAN definitions:
# https://stackoverflow.com/questions/11040133/what-does-defining-win32-lean-and-mean-exclude-exactly
list(APPEND PYGMO_CXX_FLAGS_DEBUG "-DNOMINMAX" "/bigobj" "-DWIN32_LEAN_AND_MEAN")
list(APPEND PYGMO_CXX_FLAGS_RELEASE "-DNOMINMAX" "/bigobj" "-DWIN32_LEAN_AND_MEAN")
# Enable strict conformance mode, if supported.
set(CMAKE_REQUIRED_QUIET TRUE)
check_cxx_compiler_flag("/permissive-" _PYGMO_MSVC_SUPPORTS_STRICT_CONFORMANCE)
unset(CMAKE_REQUIRED_QUIET)
if(_PYGMO_MSVC_SUPPORTS_STRICT_CONFORMANCE)
message(STATUS "The '/permissive-' flag is supported, enabling it.")
list(APPEND PYGMO_CXX_FLAGS_DEBUG "/permissive-")
list(APPEND PYGMO_CXX_FLAGS_RELEASE "/permissive-")
endif()
unset(_PYGMO_MSVC_SUPPORTS_STRICT_CONFORMANCE)
if(YACMA_COMPILER_IS_CLANGXX)
# clang-cl emits various warnings from third party deps, let's just silence them.
# NOTE: at one point in the recent past, MSVC added an options similar to GCC's isystem:
# https://blogs.msdn.microsoft.com/vcblog/2017/12/13/broken-warnings-theory/
# We probably just need to wait for this to be picked up by CMake/clang-cl. Let's
# revisit the issue in the future.
list(APPEND _PYGMO_CLANG_CL_DISABLED_WARNINGS
"-Wno-unused-variable"
"-Wno-inconsistent-dllimport"
"-Wno-unknown-pragmas"
"-Wno-unused-parameter"
"-Wno-sign-compare"
"-Wno-deprecated-declarations"
"-Wno-deprecated-dynamic-exception-spec"
"-Wno-old-style-cast"
"-Wno-sign-conversion"
"-Wno-non-virtual-dtor"
"-Wno-deprecated"
"-Wno-shadow"
"-Wno-shorten-64-to-32"
"-Wno-reserved-id-macro"
"-Wno-undef"
"-Wno-c++98-compat-pedantic"
"-Wno-documentation-unknown-command"
"-Wno-zero-as-null-pointer-constant"
"-Wno-language-extension-token"
"-Wno-gnu-anonymous-struct"
"-Wno-nested-anon-types"
"-Wno-documentation"
"-Wno-comma"
"-Wno-nonportable-system-include-path"
"-Wno-global-constructors"
"-Wno-redundant-parens"
"-Wno-exit-time-destructors"
"-Wno-missing-noreturn"
"-Wno-switch-enum"
"-Wno-covered-switch-default"
"-Wno-float-equal"
"-Wno-double-promotion"
"-Wno-microsoft-enum-value"
"-Wno-missing-prototypes"
"-Wno-implicit-fallthrough"
"-Wno-format-nonliteral"
"-Wno-cast-qual"
"-Wno-disabled-macro-expansion"
"-Wno-unused-private-field"
"-Wno-unused-template"
"-Wno-unused-macros"
"-Wno-extra-semi-stmt"
"-Wno-c++98-compat")
list(APPEND PYGMO_CXX_FLAGS_DEBUG ${_PYGMO_CLANG_CL_DISABLED_WARNINGS})
list(APPEND PYGMO_CXX_FLAGS_RELEASE ${_PYGMO_CLANG_CL_DISABLED_WARNINGS})
unset(_PYGMO_CLANG_CL_DISABLED_WARNINGS)
else()
# Problematic MSVC cl warnings.
list(APPEND PYGMO_CXX_FLAGS_DEBUG "/wd4459" "/wd4251")
list(APPEND PYGMO_CXX_FLAGS_RELEASE "/wd4459" "/wd4251")
endif()
endif()
if(MINGW)
# In MinGW some tests generate big object files.
message(STATUS "Enabling the '-Wa,-mbig-obj' flag for MinGW.")
list(APPEND PYGMO_CXX_FLAGS_DEBUG "-Wa,-mbig-obj")
list(APPEND PYGMO_CXX_FLAGS_RELEASE "-Wa,-mbig-obj")
endif()
# NOTE: at least up to version 7, GCC is needlessly chatty
# about the 'override' attribute. Thus, we manually disable
# the -Wsuggest-override debug flag.
if(YACMA_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8")
include(CheckCXXCompilerFlag)
set(CMAKE_REQUIRED_QUIET TRUE)
check_cxx_compiler_flag("-Wno-suggest-override" _PYGMO_GCC_SUPPORTS_NO_OVERRIDE)
unset(CMAKE_REQUIRED_QUIET)
if(_PYGMO_GCC_SUPPORTS_NO_OVERRIDE)
message(STATUS "Enabling the '-Wno-suggest-override' flag for GCC<8.")
list(APPEND PYGMO_CXX_FLAGS_DEBUG "-Wno-suggest-override")
endif()
unset(_PYGMO_GCC_SUPPORTS_NO_OVERRIDE)
endif()
# Find the dependencies.
# pagmo.
# NOTE: put the minimum version in a variable
# so that we can re-use it below.
set (_PYGMO_MIN_PAGMO_VERSION 2.18.0)
find_package(pagmo REQUIRED)
if(${pagmo_VERSION} VERSION_LESS ${_PYGMO_MIN_PAGMO_VERSION})
message(FATAL_ERROR "The minimum pagmo version required by pygmo is ${_PYGMO_MIN_PAGMO_VERSION}, but version ${pagmo_VERSION} was found instead.")
endif()
# python.
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
message(STATUS "Python3 interpreter: ${Python3_EXECUTABLE}")
message(STATUS "Python3 installation directory: ${Python3_SITEARCH}")
set(PYGMO_INSTALL_PATH "" CACHE STRING "pygmo module installation path")
mark_as_advanced(PYGMO_INSTALL_PATH)
# Boost setup.
include(PygmoFindBoost)
# pybind11.
find_package(pybind11 REQUIRED)
if(${pybind11_VERSION} VERSION_LESS "2.6")
message(FATAL_ERROR "pybind11 >= 2.6 is required, but version ${pybind11_VERSION} was found instead.")
endif()
# Configure the sphinx config file.
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/doc/conf.py.in" "${CMAKE_CURRENT_SOURCE_DIR}/doc/conf.py" @ONLY)
# Add the module directory.
add_subdirectory(pygmo)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zengyuhang1994/pygmo2.git
git@gitee.com:zengyuhang1994/pygmo2.git
zengyuhang1994
pygmo2
pygmo2
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385