From 81845ac148a889b672350dd8cdc86c3630ef8d8f Mon Sep 17 00:00:00 2001 From: miyanyan <1138989048@qq.com> Date: Sat, 17 Feb 2024 15:25:30 +0800 Subject: [PATCH 1/4] add cmake install --- CMakeLists.txt | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b7d1856..48766a77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,6 @@ else() endif() endif() -include_directories(${CMAKE_CURRENT_LIST_DIR}/include) - aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src POCKETPY_SRC) option(PK_USE_CJSON "" OFF) @@ -77,6 +75,35 @@ else() target_link_libraries(${PROJECT_EXE_NAME} ${CMAKE_DL_LIBS}) endif() +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $ +) + if(PK_USE_CJSON) target_link_libraries(${PROJECT_NAME} 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" + ) + + # generate config.cmake + install( + EXPORT ${PROJECT_NAME}_target + FILE ${PROJECT_NAME}-config.cmake + DESTINATION "share/${PROJECT_NAME}" + ) +endif() From c891d3dbba40ad1098d48352f3a509499d3f48ba Mon Sep 17 00:00:00 2001 From: miyanyan <1138989048@qq.com> Date: Sun, 18 Feb 2024 16:05:56 +0800 Subject: [PATCH 2/4] [fix] don't export cjson when PK_USE_CJSON is ON --- 3rd/cjson/CMakeLists.txt | 2 +- CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/3rd/cjson/CMakeLists.txt b/3rd/cjson/CMakeLists.txt index 7f9279c1..2d1515d0 100644 --- a/3rd/cjson/CMakeLists.txt +++ b/3rd/cjson/CMakeLists.txt @@ -6,7 +6,7 @@ set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) 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) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48766a77..705c4302 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC ) if(PK_USE_CJSON) - target_link_libraries(${PROJECT_NAME} cjson) + target_link_libraries(${PROJECT_NAME} PRIVATE $) endif() option(PK_INSTALL "Generate the install target" ON) From e40aec7ecb89f1e74ac4c8bf35301f07cddee35b Mon Sep 17 00:00:00 2001 From: miyanyan <1138989048@qq.com> Date: Sun, 18 Feb 2024 17:29:32 +0800 Subject: [PATCH 3/4] exclude empty folder --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 705c4302..549b3095 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,6 +98,7 @@ if (PK_INSTALL) DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h" + PATTERN "typings" EXCLUDE ) # generate config.cmake From 890edf0365a18c1e569af047f74988fc17be7f9f Mon Sep 17 00:00:00 2001 From: miyanyan <1138989048@qq.com> Date: Sun, 18 Feb 2024 17:51:32 +0800 Subject: [PATCH 4/4] add cmake install test --- run_cmake_install_test.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 run_cmake_install_test.sh diff --git a/run_cmake_install_test.sh b/run_cmake_install_test.sh new file mode 100644 index 00000000..1d12b549 --- /dev/null +++ b/run_cmake_install_test.sh @@ -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."