hfh*_*hc2 5 c++ cmake static-libraries
我有以下问题:我使用以下类来初始化C库:
class Hello
{
public:
Hello()
{
cout << "Hello world" << endl;
}
~Hello()
{
cout << "Goodbye cruel world" << endl;
}
} hello_inst;
Run Code Online (Sandbox Code Playgroud)
如果我将此代码包含在hello.cc文件中并将其与包含main()的另一个文件一起编译,则会在调用main()之前创建hello_inst并将其销毁.在这种情况下,它只打印一些行,在我的项目中,我通过LIBXML_TEST_VERSION初始化libxml.
我正在创建多个可执行文件,它们在cmake项目中共享许多相同的代码.根据这个线程:在CMake中添加多个可执行文件我创建了一个包含上面显示的代码的静态库,然后将可执行文件链接到该库.不幸的是,在这种情况下,永远不会创建hello_inst(并且永远不会初始化libxml2).我该如何解决这个问题?
我遇到了类似的问题,并通过将我的库定义为静态来解决它。因此我使用了以下代码:
add_library( MyLib SHARED ${LBMLIB_SRCS} ${LBMLIB_HEADER})
Run Code Online (Sandbox Code Playgroud)
也许这可以解决你的问题