@@ -18,6 +18,12 @@ project(COMPILER-JNI
1818
1919option (BUILD_TEST "Whether to build test" ON )
2020
21+ include (GNUInstallDirs)
22+ set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE )
23+ set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
24+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,$ORIGIN" )
25+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3" )
26+
2127set (JAVA_AWT_INCLUDE_PATH NotNeeded)
2228set (CMAKE_CXX_STANDARD 17)
2329find_package (JNI QUIET )
@@ -45,8 +51,6 @@ set(CODE_GEN_PROTOBUF_FILES
4551 ${GIE_COMPILER_PROTO_DIR} /basic_type.proto
4652)
4753
48- #create directory first
49- file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /flex/proto_generated_gie)
5054
5155# proto gen for gie proto
5256protobuf_generate(APPEND_PATH
@@ -55,21 +59,55 @@ protobuf_generate(APPEND_PATH
5559 OUT_VAR PROTO_SRCS_GIE
5660 PROTOS ${CODE_GEN_PROTOBUF_FILES}
5761 IMPORT_DIRS ${GIE_COMPILER_PROTO_DIR}
58- PROTOC_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR} /flex/proto_generated_gie
62+ PROTOC_OUT_DIR ${CMAKE_CURRENT_SOURCE_DIR} / include
5963)
6064
61- add_library (ir_proto SHARED ${PROTO_SRCS_GIE} )
62-
63- target_link_libraries (ir_proto ${Protobuf_LIBRARIES} )
64-
65- include_directories (${CMAKE_CURRENT_SOURCE_DIR} )
65+ include_directories (${CMAKE_CURRENT_SOURCE_DIR} /include )
6666
6767file (GLOB_RECURSE PLANNER_SRC_FILES "graph_planner.cc" )
68- add_library (graph_planner SHARED ${PLANNER_SRC_FILES} )
69- target_link_libraries (graph_planner PUBLIC ir_proto ${CMAKE_JNI_LINKER_FLAGS} ${JAVA_JVM_LIBRARY} ${JNI_LIBRARIES} ${Protobuf_LIBRARIES} )
68+ add_library (graph_planner SHARED ${PLANNER_SRC_FILES} ${PROTO_SRCS_GIE} )
69+ target_link_libraries (graph_planner ${CMAKE_JNI_LINKER_FLAGS} ${JAVA_JVM_LIBRARY} ${JNI_LIBRARIES} ${Protobuf_LIBRARIES} )
7070target_include_directories (graph_planner PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >)
7171
7272if (BUILD_TEST)
7373 add_executable (test_graph_planner test /test .cc)
7474 target_link_libraries (test_graph_planner PRIVATE graph_planner)
7575endif ()
76+
77+ # Define where the output library will be installed
78+ install (TARGETS graph_planner
79+ EXPORT GraphPlannerTargets
80+ LIBRARY DESTINATION lib
81+ ARCHIVE DESTINATION lib
82+ RUNTIME DESTINATION bin
83+ )
84+
85+ # Install header files
86+ install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /include / DESTINATION include )
87+
88+ # Export CMake package configuration
89+ install (EXPORT GraphPlannerTargets
90+ FILE GraphPlannerTargets.cmake
91+ NAMESPACE GraphPlanner::
92+ DESTINATION lib/cmake/GraphPlanner
93+ )
94+
95+ # Create a GraphPlannerConfig.cmake file for find_package()
96+ include (CMakePackageConfigHelpers)
97+ write_basic_package_version_file(
98+ "${CMAKE_CURRENT_BINARY_DIR} /GraphPlannerConfigVersion.cmake"
99+ VERSION 1.0.0
100+ COMPATIBILITY AnyNewerVersion
101+ )
102+
103+ configure_package_config_file(
104+ "${CMAKE_SOURCE_DIR} /cmake/GraphPlannerConfig.cmake.in"
105+ "${CMAKE_CURRENT_BINARY_DIR} /GraphPlannerConfig.cmake"
106+ INSTALL_DESTINATION lib/cmake/GraphPlanner
107+ )
108+
109+ install (FILES
110+ "${CMAKE_CURRENT_BINARY_DIR} /GraphPlannerConfig.cmake"
111+ "${CMAKE_CURRENT_BINARY_DIR} /GraphPlannerConfigVersion.cmake"
112+ DESTINATION lib/cmake/GraphPlanner
113+ )
0 commit comments