如何通过设置"其他库目录"来告诉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
答案 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命令以及示例。