clion setting
1.setting -> build -> cmake -> cmake options
-DCMAKE_TOOLCHAIN_FILE=./build/arch/arm-linux-cross-compile.cmake
-DCMAKE_INSTALL_PREFIX=/home/xxx/app
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON 会在 build\target 目录下生成 compile-command.json,包含各个文件编译命令,用于 debug
2.setting -> build -> cmake -> build directory
build\target
3.Cache variables
cmake 加载之后可以查看
4. 添加 TODO
// TODO 方便快速定位找到的位置
5. 映射,自动上传
- 映射
setting -> build -> Deployment
1. + 新建映射环境,mappings -> Deployment path
2. 右键 环境 -> use as default
3. excluded paths 排除映射的文件
- 自动上传
deployment -> options
- upload file to default server => never -> always
delete remote file when local are deleted
- create empty directories
- delte target items when ones
6. 从 git 新建项目
file -> new -> project from version control
填 git 路径即可
7. Clion 使用环境变量
修改 /etc/environment, 添加 PATH=$PATH:/xxx 即可
8. toolchain
setting -> build -> toolchain
1. setting 符号 -> 添加 ssh 环境
2. + -> 添加 toolchain
9. 选择工具链
2.setting -> build -> cmake -> toolchain
选择刚刚建的即可
文件结构
build
arch
arm-linux-cross-compile.cmake
cmake
add_definitions.cmake
target
include
lib
test
inc
src
CMakeLists.txt
app
thrift
inc
src
CMakeLists.txt
CMakeLists.txt
文件内容
arm-linux-cross-compile.cmake
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH /home/xxx/linux/tool/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") # For C code
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # For C++ code
SET(THRIFT_DIR /home/wjxh/linux/3rd/tool/thrift)
SET(OPENSSL_DIR /home/wjxh/linux/3rd/tool/openssl)
add_definitions.cmake
# add_definitions(-D_GNU_SOURCE)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") # For C code
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") # For C++ code
# -g 不加没有行号
# -rdynamic 不加没有函数名
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -rdynamic -Wl,-rpath=.")
CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 3.14)
PROJECT(app)
INCLUDE(build/arch/add_definite.cmake)
INCLUDE_DIRECTORIES(include)
LINK_DIRECTORIES(lib)
ADD_SUBDIRECTORY(app)
ADD_SUBDIRECTORY(lib)
次CMakeLists.txt - executable
AUX_SOURCE_DIRECTORY(src SRC)
ADD_EXECUTABLE(timer ${SRC})
INSTALL(TARGETS timer DESTINATION app)
次CMakeLists.txt - library
AUX_SOURCE_DIRECTORY(src SRC)
ADD_LIBRARY(timer SHARED ${SRC})
INSTALL(TARGETS timer DESTINATION app)
通用 CMakeLists.txt
# 将所有目录添加到所有路径
MACRO(get_subdir dir)
FILE(GLOB_RECURSE FILES_AND_DIRS LIST_DIRECTORIES true "${dir}/*")
FOREACH(FILE_OR_DIR ${FILES_AND_DIRS})
IF(IS_DIRECTORY ${FILE_OR_DIR})
LIST(APPEND INCS ${FILE_OR_DIR})
ENDIF()
ENDFOREACH()
ENDMACRO()
# 将所有文件添加到 可执行文件
MACRO(get_src dir)
FILE(GLOB_RECURSE VCMU_SRC_ ./${dir}/*.c ./${dir}/*.cpp ./${dir}/*.h)
LIST(APPEND VCMU_SRC ${VCMU_SRC_})
ENDMACRO()
INCLUDE_DIRECTORIES(${INCS})
ADD_EXECUTABLE(vcmu ${VCMU_SRC})