我使用cmake在Windows,Linux和OSX上构建 . 在Windows上,我使用我已预先构建的.dll和.lib文件,并将其放在文件夹project / windows / bin,project / windows / include和project / windows / lib中 . 这些文件夹包含我对Windows的所有第三方依赖项 . 在我的CMakeLists.txt中,我使用:
if(WIN32)
set(CMAKE_PREFIX_PATH ${PROJECT_SOURCE_DIR}/windows)
endif()
find_package(SDL2 REQUIRED)
find_package(GLEW REQUIRED)
它工作,但我只能使用库的一个配置 . 我希望能够链接库的不同配置,如Debug和Release .
问题是:我如何制作它,以便当我将visual studio项目设置为调试时,它将使用库的调试版本并在我将visual studio项目设置为发布时使用libray的发行版本?
我需要以不同方式设置/ windows库目录吗?
提前致谢
1 回答
我现在肯定,你使用的
FindSDL2
和FindGLEW
模块是否提供imported targets . 如果是这样,那么可以选择相应的库作为调试和发布,并且您应该使用导入的目标进行链接 .否则,您有两种选择:
optimized <LIB1_release> debug <LIB1_debug>
:就个人而言,我更喜欢后者,因为它在主CMakeLists文件中不那么冗长 . 不同库的定义可以通过其他方式包含在其他文件中 .
通常,我的项目中有一个
3rdparty
目录,其中包含CMakeLists.txt
文件,该文件引入外部项目并定义此类导入目标 . 在主CMake文件中,我可以轻松使用这些导入的目标 .