sid*_*guy 7 dll cmake freeimage
我正在为我的项目编写cmake脚本,我遇到了一个问题:
我的项目使用第三方库(FreeImage),它有自己的基于Makefile的构建系统.我可以通过简单地运行"make"(我正在使用gnuwin32)来构建FreeImage,它将使用MinGW构建FreeImage并生成:
FreeImage.lib
FreeImage.dll
Run Code Online (Sandbox Code Playgroud)
现在我的问题是双重的:
我知道如何链接到LIB文件,但我在其余部分丢失了.
文件夹结构如下:
MyProject # main directory
MyProject/Libs/FreeImage # FreeImage root directory
MyProject/Libs/FreeImage/Dist # This is where FreeImage outputs go (LIB and DLL)
Run Code Online (Sandbox Code Playgroud)
顺便说一句:我在Windows 7上运行.我打算用MSVC和MinGW构建我的项目.
谢谢!
编辑:我现在正在尝试使用ExternalProject_Add,如下所示:
ExternalProject_Add(
FreeImage
PREFIX ./Libs/FreeImage
URL ./Libs/FreeImage
BUILD_COMMAND make
)
Run Code Online (Sandbox Code Playgroud)
这让我成为那里的一部分,但并不完全有效......它试图为我配置东西并试图使用nmake ...呃
在我看来,有两种选择:
如果您已将 FreeImage 源代码放入项目的源代码树中,最简单的选择可能是使用execute_process()命令。假设 FreeImage 位于项目的源代码树中的“3rdparty/FreeImage/”中,您可以执行以下操作:
execute_process( COMMAND make WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/3rdParty/FreeImage )
Run Code Online (Sandbox Code Playgroud)
或者,您可以将 dll 从 3rdParty/FreeImage/bin 复制到您自己的 bin 目录中。然后你可以编写一个 FreeImageConfig.cmake 来导入库:
add_library( FreeImage IMPORTED ) set_target_properties( FreeImage PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/3rdParty/FreeImage/lib ) ...
另一种选择是使用ExternalProject模块。您还可以查看Kitware 的这篇文章,了解此模块的概述。本质上,您指定获取源代码、配置构建、构建源代码并安装它所需的完整命令链。全部在您自己的 CMakeLists.txt 中
| 归档时间: |
|
| 查看次数: |
4249 次 |
| 最近记录: |