我很好奇如何能够创建一个具有特定于平台的依赖关系的跨平台库(用CMake构建)。
例如,假设我使用GLEW或OpenGL创建了一个库,在开发期间我下载了它们的windows适应性(例如glew_x64-windows或opengl_x64-windows ),我如何确保我的库仍然具有我想要的跨平台可移植性?
可能我误解了“后缀”windows的意思,或者我只是对整个跨平台库的理解很差,但如果不是这样,我的问题就成立了。
发布于 2021-08-07 23:18:09
最佳选择:通常,您只需通过套餐请求cmake为您找到库。这将得到已经安装在正在进行编译的系统上的特定于平台的库版本。在这种情况下,你不必担心自己在哪个平台上。
不太好的选择:如果您已经下载了针对所有目标系统的平台特定库的预构建,那么您可以为每个平台创建一个进口图书馆。像这样的东西应该可以用,但我还没有测试过它:
if(WIN32)
add_library(glew STATIC IMPORTED)
set_property(TARGET glew PROPERTY
IMPORTED_LOCATION "path/to/libglew-windows.a")
target_include_directories(glew SYSTEM AFTER PUBLIC "path/to/windows/include")
else()
add_library(glew STATIC IMPORTED)
set_property(TARGET glew PROPERTY
IMPORTED_LOCATION "path/to/libglew-linux.a")
target_include_directories(glew SYSTEM AFTER PUBLIC "path/to/linux/include")
endif()
# Then you can use it as a platform-independant target:
target_link_libraries(my_app PRIVATE glew)https://stackoverflow.com/questions/68696476
复制相似问题