Visual studio 2012 CMake生成目标链接库前缀不正确的VC解决方案
我在尝试用CMake 2.8.11.2做一些看起来很简单的事情时遇到了困难。我有一个包含两个文件的文件夹:Visual studio 2012 CMake生成目标链接库前缀不正确的VC解决方案,visual-studio-2012,cmake,shared-libraries,Visual Studio 2012,Cmake,Shared Libraries,我在尝试用CMake 2.8.11.2做一些看起来很简单的事情时遇到了困难。我有一个包含两个文件的文件夹: -- CMAkeLists.txt -- add_executable(test test.c) target_link_libraries (test somelib) -- test.c -- // Some c code 当我创建生成目录并发出cmake..时,cmake将运行以下输出: C:\Users\Enis\workspace_kepler\tmp\build>
-- CMAkeLists.txt --
add_executable(test test.c)
target_link_libraries (test somelib)
-- test.c --
// Some c code
当我创建生成目录并发出cmake..
时,cmake将运行以下输出:
C:\Users\Enis\workspace_kepler\tmp\build>cmake ..
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Enis/workspace_kepler/tmp/build
在build文件夹中生成了一个MSVC2012解决方案(正如我安装的MSVC2012)。现在,问题是,当我打开该解决方案并在Properties->configuration Properties->linker->Input->Additional Dependencies下检查测试项目的链接器配置时,我看到somelib
被添加为-lsomelib.lib
而VisualStudio不喜欢这样。只有当我手动将其更改为somelib.lib
时,它才能成功链接
我做错了什么?为什么CMake会犯这么简单的错误?如何更改它生成的前缀?我面临同样的问题。问题的根源是CMAKE\u LINK\u LIBRARY\u FLAG
,但我不知道是什么设置了它。重置它(在下面的代码片段中演示)应该会对您有所帮助
set(CMAKE_LINK_LIBRARY_FLAG "")
是否从Visual Studio命令提示符运行CMake?您最初是否指定VisualStudio11作为生成器?(cmake..-G“Visual Studio 11”
或cmake..-G“Visual Studio 11 Win64”
)@Fraser感谢您指出这些,但在我明确指定生成器(在windows命令提示符下)或切换到VS命令提示符时,没有任何更改。CMake在提示符中的输出与link选项中的结果完全相同。这看起来很奇怪。通常,如果您收到“C编译器标识未知”消息,则配置失败,并且您不会得到.sln文件。我希望其他人能为您解答这个问题,但在此期间,您可以尝试重新安装VisualStudio。或者你可以试着问一下。@Fraser我刚刚安装了MSVC 2012,但是我已经在这个安装的Windows上安装和删除了很多编译器(包括MinGW和Cygwin等),所以如果一些剩余的东西让CMake感到困惑,我不会感到惊讶。我将在一个更新的安装上尝试同样的方法,如果它在那里(和其他计算机上)起作用,我不介意在这个特定的PC中调整解决方案文件中的一行。