十一 29
#include
using namespace std;
template
class CSingleton {
public:
static T* instance();
static T _instance;
};
template
T CSingleton:: _instance;
template
T* CSingleton:: instance()
{
return &_instance;
}
class CTest
{
public:
CTest()
{
cout << "Construct" << endl;
};
~CTest()
{
cout << "Destruct" << endl;
};
};
typedef CSingleton CSingleTest;
void test()
{
CSingleTest::instance();
}
int main()
{
cout << "Begin of main" << endl;
cout << "End of main" << endl;
return 0;
}
What’s the output?
十一 15
1 SRCS:=$(wildcard *.cpp *.c)
2 TARGET:=$(basename $(SRCS))
3
4 all: $(TARGET)
5
6 .cpp:
7 g++ -o $@ $<
8
9 .c:
10 gcc -o $@ $<
11
12 clean:
13 rm -f $(TARGET)
14
15 show:
16 @echo “srcs:” $(SRCS)
17 @echo “targets:” $(TARGET)
十一 04
初衷是想建立看过或者写过的代码的交叉索引,
并且可以通过Web浏览。
下载了两个版本的LXR:0.3和0.9.5。
0.3比较简单,不需要数据库的支持;
0.9.5则复杂许多,需要与数据库交互,支持mysql、postgreSql和Oracle。
先尝试安装0.9.5,毕竟是最新的版本:)
不过LXR的文档写得不好,没有一个清晰的安装步骤。
0.9.5号称只支持mysql4.0,我也不会因为要装一个LXR而把Mysql降级,所以尝试整合。
根据实验,应该是release这个关键字与Mysql5.0以上版本冲突的原因。
可能通过改建库的sql文件和Mysql.pm可以解决。
initdb-mysql:
35 create table lxr_releases
36 (fileid int not null references lxr_files,
37 release_iver char(255) binary not null,
38 primary key (fileid,release_iver)
39 );
lib/LXR/Index/Mysql.pm
把所有的r.release改成r.release_iver
74: . “and s.symname = ? and r.release_iver = ?”);
105: . “and s.symname = ? and r.release_iver = ? ”
118: . “and r.release_iver = ?”);
123: . “and r.release_iver = ?”);
128: . “and r.release_iver = ?”);
135: . “and r.release_iver = ?”);
然后修改lxr.conf
不是一般的复杂……
几经调整之后,
运行./genxref –url=http://www.liangjianhua.com/lxr
数据库中生成索引数据,
但是通过http://liangjianhua.com/lxr/source访问的时候会报500……
似乎是相对路径的问题,
但如果还需要改Perl脚本的话实在太麻烦了,
暂时到此为止吧。
半天之内想装好太难了。
近期评论