如何在VisualStudio2010中使用CMake设置属性"其他库目录"。
示例:
%(AdditionalLibraryDiretories)=" d:/ librarys / wnt / i386 / debug /"
配置参数 - >链接器 - >常规 - > "其他图书馆目录"
我尝试了这个并且它没有用。
link_directories("d:/librarys/wnt/i386/debug/")
答案 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/i386
和d:/librarys/wnt/i386/$(Configuration)
。
如果您需要更多灵活性怎么办?
如果您的debug
/ release
路径名称与VS配置名称不匹配(例如fooba
为debug
),则您无法使用{{ 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
<强>参考强>