cmake_minimum_required(VERSION 3.20) project(wtfnet LANGUAGES NONE) set(CARGO_CMD cargo) set(CARGO_TARGET_DIR "${CMAKE_BINARY_DIR}/cargo-target") set(BIN_NAME "wtfn${CMAKE_EXECUTABLE_SUFFIX}") set(BIN_PATH "${CARGO_TARGET_DIR}/release/${BIN_NAME}") file(READ "${CMAKE_SOURCE_DIR}/crates/wtfnet-cli/Cargo.toml" CLI_TOML) string(REGEX MATCH "version = \"([0-9]+\\.[0-9]+\\.[0-9]+)\"" CLI_VERSION_MATCH "${CLI_TOML}") if(CMAKE_MATCH_1) set(PACKAGE_VERSION "${CMAKE_MATCH_1}") else() set(PACKAGE_VERSION "0.1.0") endif() add_custom_command( OUTPUT "${BIN_PATH}" COMMAND "${CMAKE_COMMAND}" -E env CARGO_TARGET_DIR="${CARGO_TARGET_DIR}" "${CARGO_CMD}" build --release --workspace --bin wtfn WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" COMMENT "Building wtfn with cargo" VERBATIM ) add_custom_target(wtfnet_build ALL DEPENDS "${BIN_PATH}") install(PROGRAMS "${BIN_PATH}" DESTINATION bin) install(DIRECTORY "${CMAKE_SOURCE_DIR}/data" DESTINATION share/wtfnet) add_dependencies(install wtfnet_build) set(CPACK_PACKAGE_NAME "wtfnet") set(CPACK_PACKAGE_VERSION "${PACKAGE_VERSION}") set(CPACK_PACKAGE_FILE_NAME "wtfnet-${PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") if(WIN32) set(CPACK_GENERATOR "ZIP") else() set(CPACK_GENERATOR "TGZ") endif() include(CPack)