cmake: Change build output layout
This commit is contained in:
@@ -36,6 +36,7 @@ include(utils)
|
||||
set_version(VERSION)
|
||||
|
||||
project(ortools VERSION ${VERSION} LANGUAGES CXX)
|
||||
set(PROJECT_NAMESPACE ortools)
|
||||
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
|
||||
#message(STATUS "major: ${PROJECT_VERSION_MAJOR}")
|
||||
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
|
||||
@@ -48,11 +49,34 @@ if(NOT CMAKE_BUILD_TYPE)
|
||||
FORCE)
|
||||
endif()
|
||||
|
||||
# Layout build dir like install dir
|
||||
include(GNUInstallDirs)
|
||||
if(UNIX)
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries(.so)." ON)
|
||||
elseif(MSVC)
|
||||
# Windows only support static build.
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries(.so or .dyld)." ON)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
||||
# for multi-config build system (e.g. xcode)
|
||||
foreach(OUTPUTCONFIG IN LISTS CMAKE_CONFIGURATION_TYPES)
|
||||
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_LIBDIR})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_LIBDIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_BINDIR})
|
||||
endforeach()
|
||||
else()
|
||||
# Currently Only support static build for windows
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
|
||||
# for multi-config builds (e.g. msvc)
|
||||
foreach(OUTPUTCONFIG IN LISTS CMAKE_CONFIGURATION_TYPES)
|
||||
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_BINDIR})
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_BINDIR})
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/${OUTPUTCONFIG}/${CMAKE_INSTALL_BINDIR})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# By default only build the C++ library.
|
||||
@@ -66,6 +90,11 @@ message(STATUS "Build Java: ${BUILD_JAVA}")
|
||||
option(BUILD_DOTNET "Build .NET Library" OFF)
|
||||
message(STATUS "Build .Net: ${BUILD_DOTNET}")
|
||||
|
||||
# If wrapper are built, we need to have the install rpath in BINARY_DIR to package
|
||||
if(BUILD_PYTHON OR BUILD_JAVA OR BUILD_DOTNET)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
option(BUILD_EXAMPLES "Build examples" ON)
|
||||
message(STATUS "Build examples: ${BUILD_EXAMPLES}")
|
||||
|
||||
|
||||
@@ -110,11 +110,6 @@ if(USE_XPRESS)
|
||||
set(XPRESS_DEP XPRESS::XPRESS)
|
||||
endif()
|
||||
|
||||
# If wrapper are built, we need to have the install rpath in BINARY_DIR to package
|
||||
if(BUILD_PYTHON OR BUILD_JAVA OR BUILD_DOTNET)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
# Main Target
|
||||
add_library(${PROJECT_NAME} "")
|
||||
# Xcode fails to build if library doesn't contains at least one source file.
|
||||
|
||||
Reference in New Issue
Block a user