From 734ba67164ee3e864243baf2cfaff27fca39e21e Mon Sep 17 00:00:00 2001 From: lyf <169361657@qq.com> Date: Sun, 7 Jun 2026 22:50:54 +0800 Subject: [PATCH] =?UTF-8?q?xmake=E6=9E=84=E5=BB=BA=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xmake.lua | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 xmake.lua diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 0000000..b7f4857 --- /dev/null +++ b/xmake.lua @@ -0,0 +1,113 @@ +-- CMAKE_MINIMUM_REQUIRED(VERSION 3.5) + +-- PROJECT(SJTU-RM-CV) +-- SET(CMAKE_CXX_STANDARD 11) +-- SET(CMAKE_BUILD_TYPE RELEASE) +-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") +-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") +-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D${CMAKE_SYSTEM_NAME}") +-- SET(BIN_NAME "run") +set_project("SJTU-RM-CV") +set_version("1.0.0") +set_languages("c++11") +set_optimize("fastest") +add_defines(string.format("PATH=\"%s\"", os.projectdir())) + +if is_plat("linux") then + add_defines("Linux") +elseif is_plat("windows") then + add_defines("windows") +elseif is_plat("macosx") then + add_defines("Darwin") +end + +add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"}) + +add_rules("mode.debug", "mode.release") + +add_requires("eigen", "opencv 4.x", {system = true}) + +if os.isfile("others/include/config/config.h") then + print("Found config.h") + add_defines("WITH_CONFIG") +end + + +set_policy("build.ccache", true) + + +add_includedirs("others/include", "energy/include", "armor/include") + +target("run") + set_kind("binary") + add_files( + "main.cpp", + "others/src/**.cpp", + "energy/src/**.cpp", + "armor/src/**.cpp" + ) + +add_linkdirs("others") +add_packages("eigen", "opencv") +add_syslinks("pthread") + +if is_plat("linux") then + print("current platform: linux") + add_links("MVSDK") +elseif is_plat("windows") then + print("current platform: windows") + add_links("MVCAMSDK_X64") +elseif is_plat("macosx") then + print("current platform: Mac") + add_links("mvsdk") +else + print("Unsupported platform") +end +-- SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) + + +-- FIND_FILE(CONFIG_FOUND "config.h" "others/include/config") +-- if (CONFIG_FOUND) +-- MESSAGE("Found config.h") +-- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_CONFIG") +-- endif() +-- +-- +-- FIND_PROGRAM(CCACHE_FOUND ccache) +-- IF(CCACHE_FOUND) +-- SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) +-- SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) +-- MESSAGE("< Use ccache for compiler >") +-- ENDIF() +-- +-- FIND_PACKAGE(Eigen3 REQUIRED) +-- FIND_PACKAGE(OpenCV 4 REQUIRED) +-- FIND_PACKAGE(Threads) + +-- LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/others) +-- +-- INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR}) +-- INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/energy/include) +-- INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/armor/include) +-- INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/others/include) +-- +-- FILE(GLOB_RECURSE sourcefiles "others/src/*.cpp" "energy/src/*cpp" "armor/src/*.cpp") +-- ADD_EXECUTABLE(${BIN_NAME} main.cpp ${sourcefiles}) +-- +-- TARGET_LINK_LIBRARIES(${BIN_NAME} ${CMAKE_THREAD_LIBS_INIT}) +-- TARGET_LINK_LIBRARIES(${BIN_NAME} ${OpenCV_LIBS}) +-- IF (CMAKE_SYSTEM_NAME MATCHES "Linux") +-- MESSAGE(STATUS "current platform: Linux ") +-- TARGET_LINK_LIBRARIES(${BIN_NAME} "${PROJECT_SOURCE_DIR}/others/libMVSDK.so") +-- ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows") +-- MESSAGE(STATUS "current platform: Windows") +-- TARGET_LINK_LIBRARIES(${BIN_NAME} "${PROJECT_SOURCE_DIR}/others/MVCAMSDK_X64.lib") +-- ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Darwin") +-- MESSAGE(STATUS "current platform: Mac") +-- TARGET_LINK_LIBRARIES(${BIN_NAME} "${PROJECT_SOURCE_DIR}/others/libmvsdk.dylib") +-- ELSE () +-- MESSAGE(STATUS "Unsupport platform: ${CMAKE_SYSTEM_NAME}") +-- ENDIF() +-- +-- ADD_CUSTOM_TARGET(create-startup COMMAND "${PROJECT_SOURCE_DIR}/tools/create-startup.sh" "${PROJECT_SOURCE_DIR}" "${CMAKE_BINARY_DIR}") +-- ADD_CUSTOM_TARGET(train-cnn COMMAND "gnome-terminal" "--" "bash" "-c" "${PROJECT_SOURCE_DIR}/tools/TrainCNN/backward.py") \ No newline at end of file