我想使用 CMake + Visual Studio 在 Windows 下构建一个具有很多依赖项的应用程序,例如zlib. 它们都是静态库。
我已经尝试过了ADD_SUBDIRECTORY,这工作得很好,但不是只构建取决于目标,而是(zlibstatic)构建所有目标。
如何删除未使用的目标(及其解决方案)或仅选择一个?主要是我正在寻找功能来定义仅需要的目标。
我的一部分CMakeLists.txt:
ADD_SUBDIRECTORY("${CMAKE_CURRENT_SOURCE_DIR}/deps/zlib")
TARGET_INCLUDE_DIRECTORIES(MyProject PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps/zlib")
TARGET_LINK_LIBRARIES(MyProject zlibstatic)
Run Code Online (Sandbox Code Playgroud) 主要问题是“是否可以将任何类型的 func 作为参数以及如何传递?”。我正在学习 Go 并希望像这样制作我自己的异步包装函数:
func AsyncFunc(fn func(), args ...interface{}) chan bool {
var done chan bool;
go func() {
fn(args...);
done <- true;
}();
return done;
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
max := func(a, b int) int {
//some hard code what will be goroutine
if a > b {return a};
return b;
}
done := AsyncFunc(max, 5, 8);
//some pretty code
<- done;
Run Code Online (Sandbox Code Playgroud)
PS如果我的英语不好,对不起...
Edit1:我知道它是无用的、缓慢的和危险的。这只是我想要实现的疯狂想法。
我正在尝试实现自己的函子,并面临空的捕获lambda。如何区分一个字符的空结构?编译时是否有“实际”大小?我只想忽略空的lambda以防止无用的分配。
struct EmptyStruct {};
struct CharStruct { char c; };
int main()
{
char buffer1[sizeof(EmptyStruct)]; // size 1 byte
char buffer2[sizeof(CharStruct)]; // size 1 byte
}
Run Code Online (Sandbox Code Playgroud)