在网上四处看看我看到了很多这样的代码:
include(FindPkgConfig)
pkg_search_module(SDL2 REQUIRED sdl2)
target_include_directories(app SYSTEM PUBLIC ${SDL2_INCLUDE_DIRS}
target_link_libraries(app ${SDL2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是错误的方式,因为它只使用包含目录和库,但忽略了定义,库路径和可能返回的其他标志pkg-config.
这样做的正确方法是什么,并确保编译后pkg-config使用的所有编译和链接标志都被使用app?是否有一个命令来实现这一点,即类似的东西target_use(app SDL2)?
不同的编译器似乎对TR1有不同的看法.G ++似乎只接受包含的类型:
#include <tr1/unordered_map>
#include <tr1/memory>
...
Run Code Online (Sandbox Code Playgroud)
虽然微软编译器只接受:
#include <unordered_map>
#include <memory>
...
Run Code Online (Sandbox Code Playgroud)
至于我理解TR1,微软的方式是正确的.
有没有办法让G ++接受第二个版本?一般人如何以便携方式处理TR1?
我有一个在后台运行的线程,它以阻塞的方式从输入设备读取事件,现在当我退出应用程序时我想正确地清理线程,但是我不能只运行pthread_join()因为线程由于阻塞IO,它永远不会退出.
我该如何正确解决这种情况?我应该发送pthread_kill(theard,SIGIO)还是pthread_kill(theard,SIGALRM)来打破阻塞?是其中任何一个甚至是正确的信号?或者有另一种方法来解决这种情况,并让该子线程退出阻塞读取?
目前有点困惑,因为我的谷歌搜索没有找到解决方案.
这是在Linux上并使用pthreads.
编辑:我用SIGIO和SIGALRM玩了一下,当我没有安装信号处理程序时他们打破了阻塞IO,但在控制台上给出了一条消息("I/O可能")但是当我安装一个信号处理程序时,为了避免该消息,它们不再破坏阻塞IO,因此线程不会终止.所以我回到了第一步.
使用时boost::program_options,如何设置参数名称boost::program_options::value<>()?
#include <iostream>
#include <boost/program_options.hpp>
int main()
{
boost::program_options::options_description desc;
desc.add_options()
("width", boost::program_options::value<int>(),
"Give width");
std::cout << desc << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出:
--width arg Give width
Run Code Online (Sandbox Code Playgroud)
我想要的是arg用更具描述性的名称替换名称NUM:
--width NUM Give width
Run Code Online (Sandbox Code Playgroud) 我有一个目录images/,我想build/images/从Makefile中复制到.该目录可能包含多个级别的子目录.最优雅的方式是什么?我想要:
make运行时都有完整的目录副本(即没有cp -r)images/应自动更新build/images/)make,所以没有rsync或cp -u如果可能的话我正在使用GNU make,因此允许GNU特定的东西.
我有一个SCons脚本需要大约10秒才发现没有什么需要重建,这对于本质上相当小的项目感觉非常长.阅读SConscript本身只花了一两秒钟,大部分时间花在:
scons: Building targets ...
Run Code Online (Sandbox Code Playgroud)
步.
我怎样才能知道此时究竟scons在做什么?还有什么其他一般建议可以写快速SCons脚本?
我有一个图像/ pixbuf,我想绘制到gtk.DrawingArea并经常刷新,所以blitting操作必须快.这样做很简单:
def __init__(self):
self.drawing_area = gtk.DrawingArea()
self.image = gtk.gdk.pixbuf_new_from_file("image.png")
def area_expose_cb(self, area, event):
self.drawing_area.window.draw_pixbuf(self.gc, self.image, 0, 0, x, y)
Run Code Online (Sandbox Code Playgroud)
然而,导致性能非常慢,可能是由于pixbuf不是显示器颜色格式.
我也没有在开罗取得成功,因为它似乎仅限于24/32位格式,并且没有16位格式(FORMAT_RGB16_565不受支持和弃用).
在Gtk +中快速绘制图片有哪些替代方案?
给出一个简单的脚本:
#!/usr/bin/env python3
if __name__ == "__main__":
print("Hello World")
Run Code Online (Sandbox Code Playgroud)
如何在不执行if __name__ == "__main__":块的情况下将其加载到交互式解释器中?默认情况下会执行:
$ python3 -i simple-script.py
Hello World
>>> ?
Run Code Online (Sandbox Code Playgroud)