CMake设置VisualStudion2010参数"附加库目录"

时间:2015-10-21 07:46:36

标签: c++ visual-studio cmake

如何在VisualStudio2010中使用CMake设置属性"其他库目录"。

示例:

%(AdditionalLibraryDiretories)=" d:/ librarys / wnt / i386 / debug /"

enter image description here

配置参数 - >链接器 - >常规 - > "其他图书馆目录"

我尝试了这个并且它没有用。

link_directories("d:/librarys/wnt/i386/debug/")

1 个答案:

答案 0 :(得分:4)

将我的评论转化为答案

link_directories()涵盖哪些内容?

我使用VS2012 / CMake 3.3.0对其进行了测试,如果您在link_directories(...)调用之前放置add_executable(...),它似乎可以正常工作。

link_directories("d:/librarys/wnt/i386")

get_directory_property(_my_link_dirs LINK_DIRECTORIES)
message(STATUS "_my_link_dirs = ${_my_link_dirs}") 

add_executable(...)

您使用link_directories()添加的所有内容都将附加到目录属性LINK_DIRECTORIES,并分配给之后列出的任何目标。

在上面的示例中,我进入了Visual Studio"其他库目录"属性:

  

d:/图书馆的/的Wnt / I386; d:/图书馆的/的Wnt / I386 / $(配置);%(AdditionalLibraryD irectories)

CMake确实 - 根据配置覆盖库 - 包括您在link_directories()中提供的两种变体:d:/librarys/wnt/i386d:/librarys/wnt/i386/$(Configuration)

如果您需要更多灵活性怎么办?

如果您的debug / release路径名称与VS配置名称不匹配(例如foobadebug),则您无法使用{{ 1}}。一种方法是直接扩展链接器标志:

link_directories()

然后我进入project(...) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /LIBPATH:\"d:/librarys/wnt/i386/fooba\"") 配置属性:

  

%(AdditionalLibraryDirectories); d:/图书馆的/的Wnt / I386 / fooba

由于Debug缺乏灵活性,我通常只使用target_link_libraries()命令。 E.g:

link_directories()

将在Debug" Additional Dependencies"属性:

  

KERNEL32.LIB; USER32.LIB; GDI32.LIB; winspool.lib; SHELL32.LIB; ole32.lib; oleaut32.lib; UUID.LIB; comdlg32.lib; advapi32.lib; d:\图书馆的\ Wnt信号\ I386 \ fooba \ foo.lib

<强>参考