主要开关选项
BUILD_SHARED_LIBS:这个开关用来控制默认的库编译方式,如果不进行设置,使用 add_library 又没有指定库类型的情况下,默认编译生成的库都是静态库。如果 set(BUILD_SHARED_LIBS ON) 后,默认生成的为动态库
CMAKE_CXX_FLAGS:设置 C++ 编译选项
设置可执行文件的输出路径(EXCUTABLE_OUTPUT_PATH是全局变量)
set(EXECUTABLE_OUTPUT_PATH [output_path])
如set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
设置库文件的输出路径(LIBRARY_OUTPUT_PATH是全局变量)
set(LIBRARY_OUTPUT_PATH [output_path])
设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
set( CMAKE_BUILD_TYPE "Release" )
设置C++编译参数(CMAKE_CXX_FLAGS是全局变量)
set(CMAKE_CXX_FLAGS "-std=c++11") # c++11
set(CMAKE_CXX_FLAGS "-g") # 调试信息
set(CMAKE_CXX_FLAGS "-Wall") # 开启所有警告
9. 设置变量
9.1 set 直接设置变量的值
set(SRC_LIST main.cpp test.cpp)
add_executable(demo ${SRC_LIST})
9.2 set 追加设置变量的值
set(SRC_LIST main.cpp)
set(SRC_LIST ${SRC_LIST} test.cpp)
add_executable(demo ${SRC_LIST})
9.3 list 追加或者删除变量的值
set(SRC_LIST main.cpp)
list(APPEND SRC_LIST test.cpp)
list(REMOVE_ITEM SRC_LIST main.cpp)
add_executable(demo ${SRC_LIST})
install 安装规则
install 指定在安装时要运行的规则
报错: undefined reference to ......
C++程序报错undefined reference to
在C++代码中调用C的库文件,需加上extern "C",用来告知编译器:这是一个用C写成的库文件,请用C的方式连接他们。
Undefined reference to 错误:这类错误是在连接过程中出现的,可能有两种原因∶
一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这 需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;
二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有 给定相应的函数库的名称,或者是该档案库的目录名称有问题.
makefile
Make 命令教程
Makefile文件的格式
Makefile文件由一系列规则(rules)构成。每条规则的形式如下。
<target> : <prerequisites>
[tab] <commands>
上面第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites);第二行必须由一个tab键起首,后面跟着"命令"(commands)。
"目标"是必需的,不可省略;"前置条件"和"命令"都是可选的,但是两者之中必须至少存在一个。
每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。下面就详细讲解,每条规则的这三个组成部分。
CLion
Ctrl + / 添加或删除注释
Ctrl + Alt + L 格式化代码
Alt + Enter 智能提示
Ctrl + R 替换
Ctrl + Shift + R 全局替换
Ctrl + F 搜索
Ctrl + Shift + F 全局搜索
Ctrl + B 在定义和申明之间跳转
Ctrl + Shift + Backspace 回到最后编辑的地方
Alt + 鼠标选择 多行编辑
Shift + Enter 在下面新开一行
Ctrl + Alt + -/+ 展开折叠当前函数、类
Ctrl + Shift + -/+ 展开折叠所有函数、类Ctrl + N 查找类
Ctrl + Q 快速查看文档
Ctrl + P 提示参数信息
Ctrl + H 查看继承树
Ctrl + Shift + N 找文件
Shift + Shift 全局搜索
在keymap快捷键找到 related symbol : .h 和.CPPcpp切换
VS Code
ctrl+shift+n 打开新窗口