cmake: Change build output layout
This commit is contained in:
@@ -36,6 +36,7 @@ include(utils)
|
|||||||
set_version(VERSION)
|
set_version(VERSION)
|
||||||
|
|
||||||
project(ortools VERSION ${VERSION} LANGUAGES CXX)
|
project(ortools VERSION ${VERSION} LANGUAGES CXX)
|
||||||
|
set(PROJECT_NAMESPACE ortools)
|
||||||
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
|
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
|
||||||
#message(STATUS "major: ${PROJECT_VERSION_MAJOR}")
|
#message(STATUS "major: ${PROJECT_VERSION_MAJOR}")
|
||||||
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
|
#message(STATUS "minor: ${PROJECT_VERSION_MINOR}")
|
||||||
@@ -48,11 +49,34 @@ if(NOT CMAKE_BUILD_TYPE)
|
|||||||
FORCE)
|
FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Layout build dir like install dir
|
||||||
|
include(GNUInstallDirs)
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
option(BUILD_SHARED_LIBS "Build shared libraries(.so)." ON)
|
option(BUILD_SHARED_LIBS "Build shared libraries(.so or .dyld)." ON)
|
||||||
elseif(MSVC)
|
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||||
# Windows only support static build.
|
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(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()
|
endif()
|
||||||
|
|
||||||
# By default only build the C++ library.
|
# By default only build the C++ library.
|
||||||
@@ -66,6 +90,11 @@ message(STATUS "Build Java: ${BUILD_JAVA}")
|
|||||||
option(BUILD_DOTNET "Build .NET Library" OFF)
|
option(BUILD_DOTNET "Build .NET Library" OFF)
|
||||||
message(STATUS "Build .Net: ${BUILD_DOTNET}")
|
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)
|
option(BUILD_EXAMPLES "Build examples" ON)
|
||||||
message(STATUS "Build examples: ${BUILD_EXAMPLES}")
|
message(STATUS "Build examples: ${BUILD_EXAMPLES}")
|
||||||
|
|
||||||
|
|||||||
@@ -110,11 +110,6 @@ if(USE_XPRESS)
|
|||||||
set(XPRESS_DEP XPRESS::XPRESS)
|
set(XPRESS_DEP XPRESS::XPRESS)
|
||||||
endif()
|
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
|
# Main Target
|
||||||
add_library(${PROJECT_NAME} "")
|
add_library(${PROJECT_NAME} "")
|
||||||
# Xcode fails to build if library doesn't contains at least one source file.
|
# Xcode fails to build if library doesn't contains at least one source file.
|
||||||
|
|||||||
Reference in New Issue
Block a user