cmake: Use PROJECT_NAMESPACE

This commit is contained in:
Mizux Seiha
2021-11-12 01:30:58 +01:00
parent b42582de27
commit 5713958c45
4 changed files with 44 additions and 43 deletions

View File

@@ -131,7 +131,7 @@ if(WIN32)
endif()
# ALIAS
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
add_library(${PROJECT_NAMESPACE}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
# Generate Protobuf cpp sources
set(PROTO_HDRS)
@@ -199,11 +199,11 @@ target_compile_definitions(${PROJECT_NAME}_proto PUBLIC ${OR_TOOLS_COMPILE_DEFIN
target_compile_options(${PROJECT_NAME}_proto PUBLIC ${OR_TOOLS_COMPILE_OPTIONS})
#target_link_libraries(${PROJECT_NAME}_proto PRIVATE protobuf::libprotobuf)
add_dependencies(${PROJECT_NAME}_proto protobuf::libprotobuf)
add_library(${PROJECT_NAME}::proto ALIAS ${PROJECT_NAME}_proto)
# Add ortools::proto to libortools
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAME}::proto)
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAME}::proto>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}::proto)
add_library(${PROJECT_NAMESPACE}::proto ALIAS ${PROJECT_NAME}_proto)
# Add ${PROJECT_NAMESPACE}::proto to libortools
#target_link_libraries(${PROJECT_NAME} PRIVATE ${PROJECT_NAMESPACE}::proto)
target_sources(${PROJECT_NAME} PRIVATE $<TARGET_OBJECTS:${PROJECT_NAMESPACE}::proto>)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAMESPACE}::proto)
foreach(SUBPROJECT IN ITEMS
algorithms
@@ -244,7 +244,7 @@ install(TARGETS ${PROJECT_NAME}
)
install(EXPORT ${PROJECT_NAME}Targets
NAMESPACE ${PROJECT_NAME}::
NAMESPACE ${PROJECT_NAMESPACE}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
install(DIRECTORY ortools
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
@@ -298,7 +298,7 @@ function(add_cxx_sample FILE_NAME)
add_executable(${SAMPLE_NAME} ${FILE_NAME})
target_include_directories(${SAMPLE_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_features(${SAMPLE_NAME} PRIVATE cxx_std_17)
target_link_libraries(${SAMPLE_NAME} PRIVATE ortools::ortools)
target_link_libraries(${SAMPLE_NAME} PRIVATE ${PROJECT_NAMESPACE}::ortools)
include(GNUInstallDirs)
install(TARGETS ${SAMPLE_NAME})
@@ -331,7 +331,7 @@ function(add_cxx_example FILE_NAME)
add_executable(${EXAMPLE_NAME} ${FILE_NAME})
target_include_directories(${EXAMPLE_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_features(${EXAMPLE_NAME} PRIVATE cxx_std_17)
target_link_libraries(${EXAMPLE_NAME} PRIVATE ortools::ortools)
target_link_libraries(${EXAMPLE_NAME} PRIVATE ${PROJECT_NAMESPACE}::ortools)
include(GNUInstallDirs)
install(TARGETS ${EXAMPLE_NAME})
@@ -364,7 +364,7 @@ function(add_cxx_test FILE_NAME)
add_executable(${TEST_NAME} ${FILE_NAME})
target_include_directories(${TEST_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_features(${TEST_NAME} PRIVATE cxx_std_17)
target_link_libraries(${TEST_NAME} PRIVATE ortools::ortools)
target_link_libraries(${TEST_NAME} PRIVATE ${PROJECT_NAMESPACE}::ortools)
if(BUILD_TESTING)
add_test(NAME cxx_${COMPONENT_NAME}_${TEST_NAME} COMMAND ${TEST_NAME})

View File

@@ -2,7 +2,7 @@ if(NOT BUILD_DOTNET)
return()
endif()
if(NOT TARGET ortools::ortools)
if(NOT TARGET ${PROJECT_NAMESPACE}::ortools)
message(FATAL_ERROR ".Net: missing ortools TARGET")
endif()
@@ -57,7 +57,7 @@ foreach(PROTO_FILE IN LISTS proto_dotnet_files)
VERBATIM)
list(APPEND PROTO_DOTNETS ${PROTO_DOTNET})
endforeach()
add_custom_target(Dotnet${PROJECT_NAME}_proto DEPENDS ${PROTO_DOTNETS} ortools::ortools)
add_custom_target(Dotnet${PROJECT_NAME}_proto DEPENDS ${PROTO_DOTNETS} ${PROJECT_NAMESPACE}::ortools)
# Create the native library
add_library(google-ortools-native SHARED "")
@@ -79,7 +79,7 @@ elseif(UNIX)
endif()
# CMake will remove all '-D' prefix (i.e. -DUSE_FOO become USE_FOO)
#get_target_property(FLAGS ortools::ortools COMPILE_DEFINITIONS)
#get_target_property(FLAGS ${PROJECT_NAMESPACE}::ortools COMPILE_DEFINITIONS)
set(FLAGS -DUSE_BOP -DUSE_GLOP -DABSL_MUST_USE_RESULT)
if(USE_SCIP)
list(APPEND FLAGS "-DUSE_SCIP")

View File

@@ -2,8 +2,8 @@ if(NOT BUILD_JAVA)
return()
endif()
if(NOT TARGET ortools::ortools)
message(FATAL_ERROR "Java: missing ortools::ortools TARGET")
if(NOT TARGET ${PROJECT_NAMESPACE}::ortools)
message(FATAL_ERROR "Java: missing ${PROJECT_NAMESPACE}::ortools TARGET")
endif()
# Will need swig
@@ -54,7 +54,7 @@ set(JAVA_NATIVE_PROJECT ortools-${NATIVE_IDENTIFIER})
set(JAVA_PROJECT ortools-java)
# CMake will remove all '-D' prefix (i.e. -DUSE_FOO become USE_FOO)
#get_target_property(FLAGS ortools::ortools COMPILE_DEFINITIONS)
#get_target_property(FLAGS ${PROJECT_NAMESPACE}::ortools COMPILE_DEFINITIONS)
set(FLAGS -DUSE_BOP -DUSE_GLOP -DABSL_MUST_USE_RESULT)
if(USE_SCIP)
list(APPEND FLAGS "-DUSE_SCIP")
@@ -95,7 +95,7 @@ foreach(PROTO_FILE IN LISTS proto_java_files)
VERBATIM)
list(APPEND PROTO_JAVAS ${PROTO_JAVA})
endforeach()
add_custom_target(Java${PROJECT_NAME}_proto DEPENDS ${PROTO_JAVAS} ortools::ortools)
add_custom_target(Java${PROJECT_NAME}_proto DEPENDS ${PROTO_JAVAS} ${PROJECT_NAMESPACE}::ortools)
# Create the native library
add_library(jniortools SHARED "")

View File

@@ -5,7 +5,7 @@ endif()
# Use latest UseSWIG module (3.14) and Python3 module (3.18)
cmake_minimum_required(VERSION 3.18)
if(NOT TARGET ortools::ortools)
if(NOT TARGET ${PROJECT_NAMESPACE}::ortools)
message(FATAL_ERROR "Python: missing ortools TARGET")
endif()
@@ -144,10 +144,10 @@ foreach(PROTO_FILE IN LISTS proto_py_files)
VERBATIM)
list(APPEND PROTO_PYS ${PROTO_PY})
endforeach()
add_custom_target(Py${PROJECT_NAME}_proto DEPENDS ${PROTO_PYS} ortools::ortools)
add_custom_target(Py${PROJECT_NAME}_proto DEPENDS ${PROTO_PYS} ${PROJECT_NAMESPACE}::ortools)
# CMake will remove all '-D' prefix (i.e. -DUSE_FOO become USE_FOO)
#get_target_property(FLAGS ortools::ortools COMPILE_DEFINITIONS)
#get_target_property(FLAGS ${PROJECT_NAMESPACE}::ortools COMPILE_DEFINITIONS)
set(FLAGS -DUSE_BOP -DUSE_GLOP -DABSL_MUST_USE_RESULT)
if(USE_SCIP)
list(APPEND FLAGS "-DUSE_SCIP")
@@ -168,30 +168,30 @@ endforeach()
#######################
## Python Packaging ##
#######################
set(PYTHON_PATH ${PROJECT_BINARY_DIR}/python/${PYTHON_PROJECT})
message(STATUS "Python project build path: ${PYTHON_PATH}")
set(PYTHON_PROJECT_PATH ${PROJECT_BINARY_DIR}/python/${PYTHON_PROJECT})
message(STATUS "Python project build path: ${PYTHON_PROJECT_PATH}")
#file(MAKE_DIRECTORY python/${PYTHON_PROJECT})
file(GENERATE OUTPUT ${PYTHON_PATH}/__init__.py CONTENT "__version__ = \"${PROJECT_VERSION}\"\n")
file(GENERATE OUTPUT ${PYTHON_PATH}/init/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/algorithms/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/graph/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/linear_solver/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/constraint_solver/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/packing/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/sat/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/sat/python/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/scheduling/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PATH}/util/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/__init__.py CONTENT "__version__ = \"${PROJECT_VERSION}\"\n")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/init/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/algorithms/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/graph/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/linear_solver/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/constraint_solver/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/packing/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/sat/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/sat/python/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/scheduling/__init__.py CONTENT "")
file(GENERATE OUTPUT ${PYTHON_PROJECT_PATH}/util/__init__.py CONTENT "")
file(COPY
ortools/linear_solver/linear_solver_natural_api.py
DESTINATION ${PYTHON_PATH}/linear_solver)
DESTINATION ${PYTHON_PROJECT_PATH}/linear_solver)
file(COPY
ortools/sat/python/cp_model.py
ortools/sat/python/cp_model_helper.py
ortools/sat/python/visualization.py
DESTINATION ${PYTHON_PATH}/sat/python)
DESTINATION ${PYTHON_PROJECT_PATH}/sat/python)
# setup.py.in contains cmake variable e.g. @PYTHON_PROJECT@ and
# generator expression e.g. $<TARGET_FILE_NAME:pyFoo>
@@ -200,14 +200,14 @@ configure_file(
${PROJECT_BINARY_DIR}/python/setup.py.in
@ONLY)
file(GENERATE
OUTPUT ${PROJECT_BINARY_DIR}/python/$<CONFIG>/setup.py
OUTPUT ${PROJECT_BINARY_DIR}/python/setup.py
INPUT ${PROJECT_BINARY_DIR}/python/setup.py.in)
add_custom_command(
OUTPUT python/setup.py
DEPENDS ${PROJECT_BINARY_DIR}/python/$<CONFIG>/setup.py
COMMAND ${CMAKE_COMMAND} -E copy ./$<CONFIG>/setup.py setup.py
WORKING_DIRECTORY python)
#add_custom_command(
# OUTPUT python/setup.py
# DEPENDS ${PROJECT_BINARY_DIR}/python/setup.py
# COMMAND ${CMAKE_COMMAND} -E copy setup.py setup.py
# WORKING_DIRECTORY python)
configure_file(
${PROJECT_SOURCE_DIR}/tools/README.pypi.txt
@@ -242,15 +242,16 @@ add_custom_command(
#COMMAND ${Python3_EXECUTABLE} setup.py bdist_egg bdist_wheel
COMMAND ${Python3_EXECUTABLE} setup.py bdist_wheel
MAIN_DEPENDENCY
ortools # can't use TARGET alias here
ortools/python/setup.py.in
DEPENDS
python/setup.py
Py${PROJECT_NAME}_proto
${PROJECT_NAMESPACE}::ortools
BYPRODUCTS
python/${PYTHON_PROJECT}
python/${PYTHON_PROJECT}.egg-info
python/build
python/dist
python/${PYTHON_PROJECT}.egg-info
WORKING_DIRECTORY python
COMMAND_EXPAND_LISTS)