CMake和Visual Studio 2010以及其他库目录

时间:2014-11-06 14:39:30

标签: visual-studio-2010 cmake directory

如何通过设置"其他库目录"来告诉CMake我希望它生成Visual Studio 2010解决方案? " Linker"中的字段项目属性的一部分? 语言是C ++而不是使用.NET平台,我希望我的项目找到存储Boost .lib和.dll的stage / lib目录......

显然,我尝试过以下设置但是,虽然正确设置了编译器的附加包括dirs字段,但链接器的附加库目录仍为空...

unset(Boost_LIBRARIES)

find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)

if(Boost_FOUND)
   set(Boost_USE_STATIC_LIBS OFF)
   set(Boost_USE_MULTITHREADED ON)
   set(BOOST_LIBRARYDIR stage/lib)
   include_directories(${Boost_INCLUDE_DIRS})
endif()

...

target_link_libraries(cpp-lib ${Boost_LIBRARIES})

我还指定我想使用Boost库的动态版本,这就是为什么我将开关USE_STATIC_LIBS设置为OFF以便在CMakelists.txt的开头使用静态版本的Boost。

这是附加依赖项字段中的内容(超出Visual Studio自动指定的常用.lib):

C:\Program Files\boost\boost_1_56_0\stage\lib\boost_system-vc100-mt-gd-1_56.lib
C:\Program Files\boost\boost_1_56_0\stage\lib\boost_filesystem-vc100-mt-gd-1_56.lib

除了编写本文的错误字段之外,我还要补充说上面的行不是我想要的。我想只有Boost .lib和.dll路径的规范,简单地说:

C:\Program Files\boost\boost_1_56_0\stage\lib\

我已尝试将此最后一个路径放在Linker-> General-> Additional Library Directories字段中并且所有编译都很好,所以我需要一种方法告诉CMake设置正确的路径(上面的最后一个)正确的字段(链接器 - >常规 - >其他库目录)。

Tnx很多

d

2 个答案:

答案 0 :(得分:4)

通过使用link_directories(),我能够更新项目属性的“链接器”部分中的“附加库目录”字段。

find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)

if(Boost_FOUND)
    set(Boost_USE_STATIC_LIBS OFF)
    set(Boost_USE_MULTITHREADED ON)
    set(BOOST_LIBRARYDIR stage/lib)
    include_directories(${Boost_INCLUDE_DIRS})

    link_directories(${Boost_LIBRARY_DIRS})

endif()

答案 1 :(得分:0)

  

...所以我需要一种方法告诉CMake设置正确的路径(最后一个   在正确的字段中(链接器->常规->附加库)   目录)。

CMake link_directories映射到VS Properties->Linker->General->Additional Library Directories

与此相关的是,CMake target_link_libraries映射到VS Properties->Linker->Input->Additional Dependencies

看看CMake and Visual Studio,其中列出了Visual Studio上下文中的其他CMake命令以及示例。