2009-10-27
2009-10-24
CMake基础用法记录
非常棒的教程:
CMake系统教程-1
CMake系统教程-2
CMake系统教程-3
CMake系统教程-4
CMake系统教程-5
下面是一些用法示例,仅供参考。
[code lang="c" line="0"]
PROJECT(test_project)
SET(NAME test)
SET(VERSION 0.0.1)
SET(SRC_DIR ../src)
FILE(GLOB HeaderFiles "${SRC_DIR}/*.h")
FILE(GLOB SourceFiles "${SRC_DIR}/*.c")
MESSAGE(STATUS "你好,这里是CMAKE打印的消息.")
#是否显示编译过程
#连接出错时比较有用
#SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(ExtLibPath ../mylibs 其它类库所在目录)
#!!!非常重要, LINK_DIRECTORIES必须要加在TARGET前面!!!
LINK_DIRECTORIES(dir1 dir2 头文件所在目录)
INCLUDE_DIRECTORIES()
ADD_EXECUTABLE(${NAME} ${SourceFiles})
#加上-lmylib,这个需要加在target后面。
#静态
TARGET_LINK_LIBRARIES(${NAME} libmylibs.a)
#动态
#TARGET_LINK_LIBRARIES(${NAME} libmylibs.so)
#额外的宏定义
ADD_DEFINITIONS("-Wall");
#专门为某一个文件所加
#SET_SOURCE_FILES_PROPERTIES(src.cpp COMPILE_FLAGS -DHELLO)
#编译动态或者静态库示例
#==开始==================================================
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
SET (ModSrc hello.cpp)
#在build下执行make hello编译hello.so, make hello_static编译 hello.a
ADD_LIBRARY(hello SHARED ${ModSrc})
ADD_LIBRARY(hello_static STATIC ${ModSrc})
set_target_properties(hello_static PROPERTIES OUTPUT_NAME "hello")
SET_TARGET_PROPERTIES(hello PROPERTIES CLEAN_DIRECT_OUTPUT 1)
SET_TARGET_PROPERTIES(hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
#可自动生成不同版本的软连接
#SET_TARGET_PROPERTIES(hello PROPERTIES VERSION 1.1 SOVERSION 1)
#效果类似于:
# libhello.so -> libhello.so.1
# libhello.so.1 -> libhello.so.1.1
# libhello.so.1.1
#安装
#即make install时执行
INSTALL(TARGETS hello hello_static
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
INSTALL(FILES someheaders.h DESTINATION include)
#此处使用相对路径,前缀由cmake时引入
# 比如cmake -DCMAKE_INSTALL_PREFIX=/opt/ "/some dir with CMakeLists.txt/"
# make install后libhello.a,libhello.so被扔入/opt/lib/下
#卸载
ADD_CUSTOM_TARGET(uninstall COMMAND "rm" -rf "哪些文件需要详细写明")
#==结束==================================================
[/code]
2009-10-22
“You don’t exist, go away!”
root[ustore]#chroot fsroot
I have no name![/]#ssh root@10.22.65.138
You don’t exist, go away!
I have no name![/]#
2009-10-21
中国农业银行紧急通知
接到这么条短信:
中国农业银行紧急通知贵户在本月20日在深圳天虹商场交易9788元系统自动在您帐上扣除详情请咨询:0755-81130492
nnd,我的农行卡上什么时候有这么多钱了,我记得好像是个位数啊。。。
这个事情说明,穷光蛋对此类短信有天生的免疫能力!
2009-10-20
liblogger
一款为C/C++开发的日志工具,支持输出到文件、网络以及控制台,支持Linux、Windows。
liblogger_0.1.zip 内附近编译好的静态链接库,有vc6/vc9/gcc版,不好混用。
基本使用:
[code lang="c" line="0"]
控制是否使用liblogger
如果定义了DISABLE_ALL_LOGS则LogTrace之类都变为空,不记录或者显示任何调试信息。
#define DISABLE_ALL_LOGS
头文件 链接库 InitLogger初始化时参数不同,可将记录下的字符串分别打印到屏幕、文件或者网络服务器。 1. 写入文件时使用 2. 发送到服务器(服务器在liblogger的发行包中有,是Python脚本实现的。) 3. 发送到终端 调试变量时,比如: 退出程序时一律使用: [/code]
若VC,先将liblogger头文件所在目录加入Project->Setting->C/C++->PreProcessor-> Additional include directories
#include
上面提供的压缩包中提供了不同编译选项的liblogger.lib文件。
----------------------------------------
tFileLoggerInitParams fileInitParams;
memset(&fileInitParams,0,sizeof(tFileLoggerInitParams));
fileInitParams.fileName = "helloworld.log";
InitLogger(LogToFile, &fileInitParams);
-------------------------------------------
-----------------------------------------
tSockLoggerInitParams sockInitParams;
memset(&sockInitParams,0,sizeof(tSockLoggerInitParams));
sockInitParams.server = "127.0.0.1";
sockInitParams.port = 50007;
InitLogger(LogToSocket,&sockInitParams);
------------------------------------------------
------------------------------------------------
InitLogger(LogToConsole, stdout);
或者
InitLogger(LogToConsole, stderr);
------------------------------------------------
LogTrace("Trace log %s %f", "Test", 1.066f);
还有其它的如LogDebug,LogInfo, LogFatal之类,不过只有LogTrace支持变参。
DeInitLogger();
