Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 CMake生成目标链接库前缀不正确的VC解决方案_Visual Studio 2012_Cmake_Shared Libraries - Fatal编程技术网

Visual studio 2012 CMake生成目标链接库前缀不正确的VC解决方案

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>

我在尝试用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>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中调整解决方案文件中的一行。