Merge pull request #207 from miyanyan/add-cmake-install

Add cmake install
This commit is contained in:
BLUELOVETH 2024-02-19 12:52:13 +08:00 committed by GitHub
commit fe489cf329
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 60 additions and 4 deletions

View File

@ -6,7 +6,7 @@ set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
include_directories(${CMAKE_CURRENT_LIST_DIR}/include) include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
include_directories(${CMAKE_CURRENT_LIST_DIR}/../pocketpy/include) include_directories(${CMAKE_CURRENT_LIST_DIR}/../../include)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)

View File

@ -16,8 +16,6 @@ else()
endif() endif()
endif() endif()
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC) aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC)
option(PK_USE_CJSON "" OFF) option(PK_USE_CJSON "" OFF)
@ -60,6 +58,36 @@ else()
target_link_libraries(${PROJECT_EXE_NAME} ${CMAKE_DL_LIBS}) target_link_libraries(${PROJECT_EXE_NAME} ${CMAKE_DL_LIBS})
endif() endif()
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
$<INSTALL_INTERFACE:include>
)
if(PK_USE_CJSON) if(PK_USE_CJSON)
target_link_libraries(${PROJECT_NAME} cjson) target_link_libraries(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE:cjson>)
endif()
option(PK_INSTALL "Generate the install target" ON)
if (PK_INSTALL)
install(
TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}_target
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin
)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
DESTINATION include
FILES_MATCHING PATTERN "*.h"
PATTERN "typings" EXCLUDE
)
# generate config.cmake
install(
EXPORT ${PROJECT_NAME}_target
FILE ${PROJECT_NAME}-config.cmake
DESTINATION "share/${PROJECT_NAME}"
)
endif() endif()

28
run_cmake_install_test.sh Normal file
View File

@ -0,0 +1,28 @@
rm -rf install
mkdir -p install/build
cd install/build
cmake ../../ -DCMAKE_INSTALL_PREFIX=../pocketpy -DPK_USE_CJSON=ON -DPK_ENABLE_OS=ON
cmake --build . --target install --config Release -j 8
if [ -e "../pocketpy/lib/libpocketpy.so" ]; then
echo "Library installed successfully."
else
echo "Library installation failed."
exit 1
fi
if [ -e "../pocketpy/include/pocketpy.h" ]; then
echo "Header files installed successfully."
else
echo "Header files installation failed."
exit 1
fi
if [ -e "../pocketpy/share/pocketpy/pocketpy-config.cmake" ]; then
echo "Config file installed successfully."
else
echo "Config file installation failed."
exit 1
fi
echo "CMake install verified successfully."