Эх сурвалжийг харах

T20L8071 #comment 修改CMakeLists.txt以适应Linux编译环境

gifur 5 жил өмнө
parent
commit
34f0b58334

+ 53 - 12
CMakeLists.txt

@@ -36,7 +36,7 @@ option(INSTALL_INCLUDE_FILES "Enable installation of include header file or thir
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/addin/cmake/ )
 include(CheckStructHasMember)
 include(CheckIncludeFiles)
-
+include(CheckSymbolExists)
 
 # Turn on solution folders (2.8.4+)
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@@ -73,6 +73,8 @@ else()
 endif()
 message("RVC_VERSION=${RVC_VERSION_FULL}")
 
+message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}, CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
+
 configure_file("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
 include_directories(${PROJECT_BINARY_DIR})
 
@@ -130,12 +132,41 @@ if(MSVC)
 	set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 endif(MSVC)
 
-# Window occurs '/' error
-STRING(REGEX REPLACE "^([A-Z]*.)([/\\].*)" "\\1" CURRENT_DISK "${CMAKE_CURRENT_SOURCE_DIR}")
-# message(STATUS "current disk: ${CURRENT_DISK}")
-set(OUTPUT_CUR_DISK_PATH "${CURRENT_DISK}\\")
+if(CMAKE_COMPILER_IS_GNUCC)
+	if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "i686")
+		CHECK_SYMBOL_EXISTS(__x86_64__ "" IS_X86_64)
+		if(IS_X86_64)
+			set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+			message(STATUS "set -fPIC")
+		else()
+			set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
+			message(STATUS "-march=i686")
+		endif()
+	else()
+		if(CMAKE_POSITION_INDEPENDENT_CODE)
+			if(${CMAKE_VERSION} VERSION_LESS 2.8.9)
+				message(STATUS "set -fPIC 2")
+				set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+			endif()
+		endif()
+	endif()
+endif()
+
+if(MSVC)
+	# Window occurs '/' error
+	STRING(REGEX REPLACE "^([A-Z]*.)([/\\].*)" "\\1" CURRENT_DISK "${CMAKE_CURRENT_SOURCE_DIR}")
+	set(OUTPUT_CUR_DISK_PATH "${CURRENT_DISK}\\")
+else(MSVC)
+		set(OUTPUT_CUR_DISK_PATH "/opt/")
+endif(MSVC)
 set(OUTPUT_VERSION_DIR_PATH "${OUTPUT_CUR_DISK_PATH}run\\version")
 set(OUTPUT_CUR_VERSION_PATH "${OUTPUT_VERSION_DIR_PATH}\\${RVC_VERSION}")
+if(NOT MSVC)
+	string(REPLACE "\\" "/" OUTPUT_VERSION_DIR_PATH ${OUTPUT_VERSION_DIR_PATH})
+	string(REPLACE "\\" "/" OUTPUT_CUR_VERSION_PATH ${OUTPUT_CUR_VERSION_PATH})
+endif(NOT MSVC)
+
+
 
 set(PACK_INSTALL_PREFIX_ORIGIN "run")
 set(PACK_INSTALL_PREFIX_VERSION "${PACK_INSTALL_PREFIX_ORIGIN}/version")
@@ -250,8 +281,10 @@ string(REPLACE ";" " " RVC_BUILD_CONFIG "${RVC_BUILD_CONFIG_LIST}")
 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/buildflags.h.in ${CMAKE_CURRENT_BINARY_DIR}/buildflags.h)
 
 # 
-string(REPLACE "\\" "/" OUTPUT_VERSION_DIR_PATH ${OUTPUT_VERSION_DIR_PATH})
-string(REPLACE "\\" "/" OUTPUT_CUR_DISK_PATH ${OUTPUT_CUR_DISK_PATH})
+if(MSVC)
+	string(REPLACE "\\" "/" OUTPUT_VERSION_DIR_PATH ${OUTPUT_VERSION_DIR_PATH})
+	string(REPLACE "\\" "/" OUTPUT_CUR_DISK_PATH ${OUTPUT_CUR_DISK_PATH})
+endif(MSVC)
 set(CMAKE_INSTALL_PREFIX "${OUTPUT_CUR_DISK_PATH}")
 #set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
 set(CMAKE_INSTALL_LOCAL_ONLY ON)
@@ -271,7 +304,7 @@ set(CPACK_PACKAGE_VERSION_MAJOR ${RVC_VERSION_MAJOR})
 set(CPACK_PACKAGE_VERSION_MINOR ${RVC_VERSION_MINOR})
 set(CPACK_PACKAGE_VERSION_PATCH ${RVC_VERSION_REVISION})
 
-set(CPACK_COMPONENTS_ALL headers libraries)
+set(CPACK_COMPONENTS_ALL headers libraries symbols scripts)
 
 if(MSVC)
 	if( NOT CPACK_GENERATOR)
@@ -281,6 +314,11 @@ if(MSVC)
 	if(CPACK_GENERATOR MATCHES "NSIS")
 		set(CPACK_PACKAGE_INSTALL_DIRECTORY "C:\\\\Run")
 	endif()
+else(MSVC)
+	if( NOT CPACK_GENERATOR)
+		set(CPACK_GENERATOR "TGZ")
+	message(STATUS "set tgz package file type")
+	endif()
 endif(MSVC)
 
 if(MSVC)
@@ -309,21 +347,24 @@ endif()
 file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/*")
 install(FILES ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
 #install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/bin" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" COMPONENT libraries)
-install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/cfg" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" COMPONENT configs FILES_MATCHING PATTERN "*.ini")
+install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/cfg" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/addin/cfg/shell.ini.in" ${CMAKE_BINARY_DIR}/shell.ini @ONLY)
-install(FILES ${CMAKE_BINARY_DIR}/shell.ini DESTINATION ${RVC_CONFIG_PATH})
+install(FILES ${CMAKE_BINARY_DIR}/shell.ini DESTINATION ${RVC_CONFIG_PATH} COMPONENT scripts)
 set(active_txt_file "${CMAKE_BINARY_DIR}/active.txt")
 file(WRITE ${active_txt_file} "${RVC_VERSION}")
 #install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")
 #install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${active_txt_file} ${OUTPUT_VERSION_DIR_PATH}/active.txt   )")
 
-install(FILES ${active_txt_file} DESTINATION ${PACK_INSTALL_PREFIX_VERSION})
+install(FILES ${active_txt_file} DESTINATION ${PACK_INSTALL_PREFIX_VERSION} COMPONENT scripts)
 install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/hardwarecfg" DESTINATION "${PACK_INSTALL_PREFIX_ORIGIN}" COMPONENT scripts)
 if(MSVC)
 	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.vbs")
-	install(FILES ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
+else(MSVC)
+	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.sh")
 endif(MSVC)
 
+install(FILES ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
+
 
 
 # if necessary

+ 1 - 1
CMakeSettings.json

@@ -34,7 +34,7 @@
       "buildCommandArgs": "",
       "ctestCommandArgs": "",
       "inheritEnvironments": [ "linux_x64" ],
-      "remoteMachineName": "928485471;99.12.200.186 (username=gifur, port=22, authentication=Password)",
+      "remoteMachineName": "-48757982;10.42.0.1 (username=gifur, port=1022, authentication=Password)",
       "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
       "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
       "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",

+ 59 - 0
addin/startup_scripts/spexplorer.sh

@@ -0,0 +1,59 @@
+#!/system/bin/sh
+MY_PATH="`dirname \"$0\"`"              # relative
+# echo "1"$MY_PATH
+MY_PATH="`( cd \"$MY_PATH\" && pwd )`"  # absolutized and normalized
+# echo "2"$MY_PATH
+common_run() {
+	echo "[RUN] $@"
+	"$@"
+	RES=$?
+	if [ $RES -ne 0 ];
+	then
+		echo "[ERROR] $@ retured $RES"
+		exit 1
+	fi
+}
+# echo "scriptPath1: "$(cd `dirname $0`; pwd)
+# echo "scriptPath2: "$(dirname $(readlink -f $0))
+# echo "scriptPath4: "$(cd "$(dirname "$0")" && pwd)
+# echo "scriptPath5: "$(dirname "$(readlink -f "$0")")
+# echo "scriptPath6: "$(cd "$(dirname "$0")" && pwd -P)
+versionpath=""
+versionpath=$MY_PATH"/active.txt"
+echo $versionpath
+line=""
+version=$(cat $versionpath)
+if [ -z "$version" ]; then
+    exit -1
+fi
+# add library search path
+LIBDIR1=${MY_PATH}"/"${version}"/bin"
+path=$LD_LIBRARY_PATH
+echo $path
+result=$(echo $path | grep "${LIBDIR1}")
+if [ "$result" != "" ]
+#if [ $path =~ $LIBDIR1 ]
+then
+	echo "has execute path alreadly"
+else
+	echo "add path: ${LIBDIR1}"
+	export LD_LIBRARY_PATH=$LIBDIR1:$LD_LIBRARY_PATH
+fi
+
+shell_path=${MY_PATH}"/"${version}"/bin/spshell"
+host_path=${MY_PATH}"/"${version}"/bin/sphost"
+# echo "bin_path: ${bin_path}"
+if [ ! -x "$shell_path" ]; then
+chmod 766 $shell_path
+echo "add run privilege for : ${shell_path}"
+fi
+if [ ! -x "$host_path" ]; then
+chmod 766 $host_path
+echo "add run privilege for : ${host_path}"
+fi
+common_run exec ${shell_path}
+exit $?
+
+
+
+