需要更多色彩的
不是代码,而是生活

win10 取消开机密码

旅行者1号阅读(436)

运行“netplwiz”命令,如图

把“要使用本计算机,用户必须输入用户名和密码”选项取消勾选,确定。

输入一个可用的用户名与密码,确定即可。

cmake中判断操作系统平台的两种方法

旅行者1号阅读(1260)

方法一

MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}")
 
IF (CMAKE_SYSTEM_NAME MATCHES "Linux")
	MESSAGE(STATUS "current platform: Linux ")
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows")
	MESSAGE(STATUS "current platform: Windows")
ELSEIF (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
	MESSAGE(STATUS "current platform: FreeBSD")
ELSE ()
	MESSAGE(STATUS "other platform: ${CMAKE_SYSTEM_NAME}")
ENDIF (CMAKE_SYSTEM_NAME MATCHES "Linux")

方法二

IF (WIN32)
	MESSAGE(STATUS "Now is windows")
ELSEIF (APPLE)
	MESSAGE(STATUS "Now is Apple systens.")
ELSEIF (UNIX)
	MESSAGE(STATUS "Now is UNIX-like OS's.")
ENDIF ()

CLion配置CMakeLists.txt引入Boost库

旅行者1号阅读(1875)

find_package

find_package(Boost
  [version] [EXACT]      # 可选项,最小版本或者确切所需版本
  [REQUIRED]             # 可选项,如果找不到所需库,报错
  [COMPONENTS <libs>...] # 所需的库名称,比如说. "date_time" 代表 "libboost_date_time"
  )

运行完后可以得到很多变量,下面列了一些主要的

Boost_FOUND            - 如果找到了所需的库就设为true
Boost_INCLUDE_DIRS     - Boost头文件搜索路径
Boost_LIBRARY_DIRS     - Boost库的链接路径
Boost_LIBRARIES        - Boost库名,用于链接到目标程序
Boost_VERSION          - 从boost/version.hpp文件获取的版本号
Boost_LIB_VERSION      - 某个库的版本

可以在搜索package之前,通过设置一些变量来帮助boost库的查找

BOOST_ROOT             - 首选的Boost安装路径
BOOST_INCLUDEDIR       - 首选的头文件搜索路径 e.g. <prefix>/include
BOOST_LIBRARYDIR       - 首选的库文件搜索路径 e.g. <prefix>/lib
Boost_NO_SYSTEM_PATHS  - 默认是OFF. 如果开启了,则不会搜索用户指定路径之外的路径

如果不设置,会到默认的目录中去寻找,在windows下,BOOST_ROOT默认为 "C:/Boost",BOOST_INCLUDEDIR默认为 "C:/Boost/include"),BOOST_LIBRARYDIR默认为 "C:/Boost/lib"

还要正确配置以下参数才能正确引入库

set(Boost_COMPILER -mgw81)#编译器后缀,将会在引用的库文件名字后加-mgw81
set(Boost_USE_MULTITHREADED ON)#启用多线程,将会在引用的库文件名字后加-mt
set(Boost_USE_STATIC_RUNTIME ON)#静态链接到C++运行库的库,将会在引用的库文件名字后加-s
set(Boost_USE_DEBUG_RUNTIME ON)#引入调试库,将会在引用的库文件名字后加-d,与Boost_USE_STATIC_RUNTIME参数合并为-sd
set(Boost_ARCHITECTURE -x64)#引用x64库,将会在引用的库文件名字后加-x64
set(Boost_USE_STATIC_LIBS ON)#引入静态链接库,对应.a后缀

以下是一个示例

cmake_minimum_required(VERSION 3.13)
project(codezd)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_COMPILER gcc)#设置c语言的编译器为gcc
set(CMAKE_CXX_COMPILER g++)#设置c++语言的编译器为g++

#可以在搜索package之前,通过设置一些变量来帮助boost库的查找
#set(BOOST_ROOT "C:/Boost")#首选的Boost安装路径
#set(BOOST_INCLUDEDIR "C:/Boost/include")#首选的头文件搜索路径
#set(BOOST_LIBRARYDIR "C:/Boost/lib")#首选的库文件搜索路径

#以下参数正确配置才能对应起库的文件名
#在这里,我要引入regex库,我的库文件名字是“libboost_regex-mgw81-mt-sd-x64-1_69.a”
set(Boost_COMPILER -mgw81)#编译器后缀,将会在引用的库文件名字后加-mgw81
set(Boost_USE_MULTITHREADED ON)#启用多线程,将会在引用的库文件名字后加-mt
set(Boost_USE_STATIC_RUNTIME ON)#静态链接到C++运行库的库,将会在引用的库文件名字后加-s
set(Boost_USE_DEBUG_RUNTIME ON)#引入调试库,将会在引用的库文件名字后加-d,与Boost_USE_STATIC_RUNTIME参数合并为-sd
set(Boost_ARCHITECTURE -x64)#引用x64库,将会在引用的库文件名字后加-x64
set(Boost_USE_STATIC_LIBS ON)#引入静态链接库,对应.a后缀

#开启以下三个参数,以便查错
set(Boost_DEBUG ON)
set(Boost_DETAILED_FAILURE_MSG ON)
set(Boost_REALPATH ON)

find_package(Boost REQUIRED COMPONENTS regex)
if(Boost_FOUND)
    #添加头文件搜索路径
    include_directories(${Boost_INCLUDE_DIRS})

    message(STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
    message(STATUS "Boost_LIBRARY_DIRS = ${Boost_LIBRARY_DIRS}.")
    message(STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.")
    message(STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")

    add_executable(test test.cpp)
    target_link_libraries (test ${Boost_LIBRARIES})
else()
    message("Boost Not Found!!!")
endif()

 

Windows编译与安装boost1.69.0

旅行者1号阅读(3209)

1.下载源代码,官网:https://www.boost.org/,解压。我这里解压到了D:\boost_1_69_0

2.打开命令行,进入到代码目录

cd /d D:\boost_1_69_0

3.执行命令

bootstrap

此时,在该目录下会生成一个b2.exe文件和bjam.exe文件

3.编译,在不特定指定编译选项情况下,boost是编译成动态库,32bit,默认安装在boost解压目录,lib编译在boost解码目录下的子目录stage/lib下,编译器根据环境自动使用gcc或msvc。

b2

可以指定编译选项,如

b2 toolset=gcc address-model=64 --build-type=complete stage

toolset=gcc表示使用gcc编译器,address-model=64表示编译为64位库,--build-type=complete表示完全编译,stage表示只生成库文件。

其它参数说明:

(1)动态库编译

指定编译选项:link=shared

(2)静态库编译

指定编译选项:link=static runtime-link=static  ,其中link表示编译静态库,runtime-link表示静态连接c++运行库

(3)选择编译

boost库有很多子库,如boost1.69支持的库有(通过命令行b2  --show-libraries查看当前boost库支持命令--help查看帮助):
The following libraries require building:
- atomic
- chrono
- container
- context
- contract
- coroutine
- date_time
- exception
- fiber
- filesystem
- graph
- graph_parallel
- iostreams
- locale
- log
- math
- mpi
- program_options
- python
- random
- regex
- serialization
- stacktrace
- system
- test
- thread
- timer
- type_erasure
- wave

如果不需要完全编译,而是想通过指定组件名编译,则需要手动指定你需要的组件,使用--with-组件名,如--with-date_time,或者--without-组件名来排除一些不需要编译的组件。

(4)完全编译

如果需要编译所有库则不需要单独指定--witch-组件名,直接使用编译选项:--build-type=complete

(5)带安装编译

默认情况下不指定prefix和install,不会安装库到指定目录,如果添加--prefix选项且含有install关键字

如:--stagedir="E:\boost_1_69_0\64" --build-dir="E:\boost_1_69_0\64\build" 指定编译库和中间文件路径

如:--prefix=”E:\boost_1_69_0\include" install 则拷贝boost所有的头文件到include

(6)编译不同C++版本

如vs2015版本,则指定工具集为toolset=msvc-14.0,vs2008为msvc-9.0,vs2010为msvc-10.0,vs2013为msvc-12.0,vs2017为msvc-15.0,gcc8.1则指定为toolset=gcc-8.1.0,也可以不写版本号采用默认的。

(7)编译不同系统位

如果编译32位,则使用architecture=x86 address-model=32

如果编译64为,则使用architecture=x86 address-model=64

其中architecture=x86指定cpu为x86系列,address-model指定使用32位地址还是64位地址;

4.编译选项详情

--build-type=complete 表示编译所有版本(编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared))

(1)toolset:表示编译器工具;。

(2)architecture:表示架构,也就是你的CPU架构,因为我安装的是win7 32位,所以使用了x86的架构。

(3)instruction-set:表示指令集,依然是8086指令集。

(4)address-model:表示地址长度为32位或64 要有address-model=64属性,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。

(5)link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static,一般都会编译成静态库,因为给出程序的时候打包boost的库会非常庞大。

(6)variant:表示生成的Debug或者release版本,一般情况下会两种版本都会编译出来的。

(7)threading:表示单/多线程编译,一般我们的程序都会用到多线程,所以选择了multi。

(8).runtime-link:表示动态/静态链接C/C++运行时库(C/C++ Runtime)。

(9)without/with:表示不需要编译/需要编译哪些库,一些自己不用的库可以无需编译。需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org/下载安装。查看boost包含库的命令是b2 --show-libraries。

(10)stage/install:stage表示只生成库文件(DLL和Lib),install还会生成包含头文件的include目录,推荐使用stage,因为boost_1_62_0\boost中就是boost库完整的头文件,所以无需再拷贝一份出来。编译出来的库会放在stage文件夹中。

(11)stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。

5.其他选项

--build-dir=<builddir>           编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了)

--stagedir=<stagedir>         存放编译后库文件的路径,默认是stage

--build-type=complete    编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared)

variant=debug|release        决定编译什么版本(Debug or Release?)

link=static|shared                 决定使用静态库还是动态库。

threading=single|multi         决定使用单线程还是多线程库。

runtime-link=static|shared   决定是静态还是动态链接C/C++标准库。

--with-<library>                     只编译指定的库,如输入--with-regex就只编译regex库了。

--show-libraries                   显示需要编译的库名称

Windows 10 Edge浏览器无法访问本地站点的解决方法

旅行者1号阅读(1073)

在本地安装好web服务器后,发现edge浏览器无法访问,而chrome,firefox,ie等都是可以的,经查,原来是因为默认访问规则的限制,Windows Apps 在默认状态下无法访问本地回环端口,需要以管理员方式在 cmd (而不是 powershell) 中使用 CheckNetIsolation LoopbackExempt 设置 App 允许访问回环端口规则。使用如下命令可解除 Edge 浏览器访问 localhost 限制:

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

小米电视与小米盒子去除开机广告的方法

旅行者1号阅读(507)

通过路由器将以下三个网址加入黑名单即可:

ad.xiaomi.com

ad1.xiaomi.com

ad.mi.com

或者通过修改路由器的hosts,添加以下内容:

127.0.0.1 ad.xiaomi.com

127.0.0.1 ad1.xiaomi.com

127.0.0.1 ad.mi.com

另外加一条规则可屏蔽投屏广告

127.0.0.1 hpplay.cn

小米手机开启中国联通VoLTE高清通话功能

旅行者1号阅读(1323)

默认情况下,当使用联通卡的时候,小米手机用联通卡在双卡和移动网络里,“启用VoLTE高清通话”一项是被禁用的,如果要启用,只需要在拨号界面输入“*#*#86583#*#*”即可打开该功能,当然,这仅仅是手机支持了,要想真正使用该功能,还得中国联通正式商用VoLET。

Android Studio控制台不打印日志的解决方法

旅行者1号阅读(793)

如果遇到不论是用System.out.println还是android.util.Log都无法在Logcat输出日志的情况,可能是手机系统把日志输出功能禁止了,以小米手机为例,找到开发者选项->日志记录器缓冲区大小,默认是关闭的,选择一个空间大小就可以了,我这里选的64K。

CentOS7访问Windows上的共享文件夹

旅行者1号阅读(520)

方法1

执行下面的命令,将挂载10.10.16.36主机的共享文件夹d到/mnt/d,该方法重启失效

mount -t cifs -o username="Admin",password="123456" //10.10.16.36/d /mnt/d

删除挂载

umount /mnt/d

方法2

开机自动挂载,则需要在/etc/fstab中加入下面一行即可

//10.10.16.36/d /mnt/d cifs username=Admin,password=123456,noserverino 0 0