我正在使用cmake编译一个包的集合,我经常为此编写自己的CMakeLists.txt。我必须使用Visual Studio 9 2008和Visual Studio 14 2015编译它们
对于VS2015,编译通常没有问题地完成,但是对于VS2008,我经常遇到cmake没有链接到的问题,或者包含一些标准的msvc库(或者特定的msvc运行时库)。因此,如果模块调用它,则无法找到memset()
。其中一个模块是glew,它具有以下输出:
Scanning dependencies of target glew
[ 8%] Building C object CMakeFiles/glew.dir/C_/Users/Daniel/OneDrive/src/glew-2.0.0/src/glew.c.obj
glew.c
[ 16%] Building RC object CMakeFiles/glew.dir/C_/Users/Daniel/OneDrive/src/glew-2.0.0/build/glew.rc.res
Microsoft (R) Windows (R) Resource Compiler Version 6.1.7600.16385
Copyright (C) Microsoft Corporation. All rights reserved.
[ 25%] Linking C shared library bin\glew32.dll
Creating library lib\glew32.lib and object lib\glew32.exp
glew.c.obj : error LNK2019: unresolved external symbol memset referenced in function glewContextInit
bin\glew32.dll : fatal error LNK1120: 1 unresolved externals
LINK failed. with 1120
NMAKE : fatal error U1077: 'C:\ProgramData\chocolatey\lib\cmake.portable\tools\cmake-3.6.1-win32-x86\bin\cmake.exe' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Users\Daniel\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Users\Daniel\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0\VC\Bin\amd64\nmake.exe"' : return code '0x2'
Stop.
我知道我必须include the libcmt.lib or msvcrt.lib(+标题)到项目,但我不知道如何。我找到了一些潜在客户here和here,但到目前为止还没有人带领我。 从命令行调用cmake时是否还有一种方法可以做到这一点(因此无需编辑或修补CMakeLists.txt文件本身)? 感谢您的任何见解!
答案 0 :(得分:0)
删除链接器-nodefaultlib选项;这可以在链接器/输入/忽略所有默认库/否
的IDE GUI中设置