2021.07.13学习总结
2021/7/13 23:38:07
本文主要是介绍2021.07.13学习总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
cmake(cmake_demo)(cmake_test)
(cmake . 后面的点不要漏了!!!!!!)
常用的预定义变量
PROJECT_SOURCE_DIR 工程的根目录
PROJECT_BINARY_DIR 运行cmake的目录,通常是${PROJECT_SOURCE_DIR}/build
ADD_EXECUTEABLE(cmake目录 源文件的集合 )经常搭配AUX_SOURCE_DIRECTORY使用
AUX_SOURCE_DIRECTORY搜寻目录下所有源文件的文件
ADD_SUBDIRECTORY()增加子文件夹--之后会进入子文件夹纪念性CMAKELIST的执行
# 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 AUX_SOURCE_DIRECTORY(. DIR_SRCS)
目录结构
. ├── bin ├── build ├── CMakeLists.txt └── src ├── CMakeLists.txt ├── main.cpp ├── model1 │ ├── CMakeLists.txt │ ├── model1.cpp │ └── model1.h ├── model2 │ ├── CMakeLists.txt │ ├── model2.cpp │ └── model2.h └── model3 ├── CMakeLists.txt ├── model3.cpp └── model3.h
cd cmakeTest && cd build cmake .. make ./../bin/cmakeTest
怎样区分debug、release版本
>>建立debug/release两目录,分别在其中执行cmake -DCMAKE_BUILD_TYPE=Debug(或Release),需要编译不同版本时进入不同目录执行make即可;
Debug版会使用参数-g;Release版使用-O3 –DNDEBUG
>> 另一种设置方法——例如DEBUG版设置编译参数DDEBUG
IF(DEBUG_mode)
add_definitions(-DDEBUG)
ENDIF()
在执行cmake时增加参数即可,例如cmake -D DEBUG_mode=ON
${} 表示取值 IF中可以直接使用变量名
$ENV{} 环境变量取值
环境赋值 SET(ENV{变量名} 值)
文档查询
cmake_demo
里面的README中很多详细的操作,
不小心改了环境路径
重新定义PATH
export PATH=/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
为所有用户添加环境变量
vim etc/profile
在结尾添加
export PATH="路径名/:$PATH"
source etc/profile
配置ssh(这个虽然做了很多次,但是一直没有总结)
-
首先是查看有没有安装ssh
dpkg -l | grep ssh
-
一般是没有,然后安装
sudo apt-get install openssh-server
-
再次查看安装的服务
-
如果没有则可以这样启动:
sudo /etc/init.d/ssh start
-
修改 /etc/ssh/sshd_config(低版本)
sudo gedit /etc/ssh/sshd_config
PermitRootLogin without-password用#注释
加上PermitRootLogin yes
-
高版本直接
sudo service ssh stop #关闭服务: sudo service ssh restart #重启服务
-
sudo service ssh restart重启服务就行了
-
这里推荐使用MobaXterm远程连接,这个工具功能很多,唯一不好的就是复制有点caodan
今天牛客网刷题错题总结
-
c++中使用protected、private修饰的构造不能再类外利用构造对象;(这里单例模式就用到了这个思想,周末有空整理一下c++的各种模式)
-
vector中的resize函数是系统分配内存大小,如果是reserve只是定义这个容器最大可以是多大,不是分配内存,就等于说家长说这个月你最多能用多少钱,但是他不一定给你这么多,如果不够用,他之后还会再给。而resize就是直接这个月给你那么多钱。
-
typeid(变量名).name()获取类型,这个操作符返回的c-type的字符串类型,所以如果嵌套的话返回的应该是char const *
#include<iostream> #include <typeinfo> using namespace std; class Class1{}; class Class2:public Class1{}; void fn0(); int fn1(int n); int main(void) { int a = 10; int* b = &a; float c; double d; cout << typeid(a).name() << endl; cout << typeid(b).name() << endl; cout << typeid(c).name() << endl; cout << typeid(d).name() << endl; cout << typeid(Class1).name() << endl; cout << typeid(Class2).name() << endl; cout << typeid(fn0).name() << endl; cout << typeid(fn1).name() << endl; cout << typeid(typeid(a).name()).name() << endl; system("pause"); }
结果
int int * float double class Class1 class Class2 void __cdecl(void) int __cdecl(int) char const *
-
局部变量可以和全局变量重名
int a = 10; int main() { int a = 9; cout << a << endl; //输出a等于9 cout << ::a << endl; //输出a等于10 return 0; }
-
C++中的拷贝构造函数在下面哪些情况下会被调用
-
使用一个对象要去构造另一个对象
MyClass myclass1; MyClass myclass2(myclass1);
-
调用函数形参是对象的时候(这里是c分配在栈函数内存是自动拷贝对象)
-
函数返回类对象的时候
-
-
编译型语言:在程序运行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序时,就不用再进行翻译了。(C,C++等,需要经过编译(compile)、链接(linker)这两个步骤)
解释型语言:是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(JavaScript、Python、Erlang、PHP、Perl、Ruby)
-
表达式不能赋值
这篇关于2021.07.13学习总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16ShardingSphere 如何完美驾驭分布式事务与 XA 协议?
- 2024-11-16ShardingSphere如何轻松驾驭Seata柔性分布式事务?
- 2024-11-16Maven资料入门指南
- 2024-11-16Maven资料入门教程
- 2024-11-16MyBatis Plus资料:新手入门教程与实践指南
- 2024-11-16MyBatis-Plus资料入门教程:快速上手指南
- 2024-11-16Mybatis资料入门教程:新手必看指南
- 2024-11-16MyBatis资料详解:新手入门与初级实战指南
- 2024-11-16MyBatisPlus资料:初学者入门指南与实用教程
- 2024-11-16MybatisPlus资料详解:初学者入门指南