今天早上,当我尝试使用cmake和nmake编译我的dll时出现以下错误(抱歉法语文本):
Création de la bibliothÞque core.lib et de l'objet core.exp
CVTRES : fatal error CVT1100: ressource en double. Type: VERSION, nom: 1, langage: 0x040C
LINK : fatal error LNK1123: échec lors de la conversion en fichier COFF: fichier non valide ou endommagÚ
LINK Pass 1 failed. with 1123
NMAKE : fatal error U1077: '"C:\Program Files (x86)\CMake\bin\cmake.exe"' : code retour '0xffffffff'
之前,everithing工作得很好。
我使用https://github.com/halex2005/CMakeHelpers的脚本使用cmake对文件进行版本控制。这是我插入到我的CMakeLists.txt中的内容:
[...]
file(GLOB SRC_FILES
${SOURCE_BASE_DIR}/src/*.cpp
${SOURCE_BASE_DIR}/src/*.h
)
[...]
if(MSVC)
include(${MAIN_DIR}/platform/cmake/common/generate_product_version.cmake)
generate_product_version(
VersionFilesOutputVariable
NAME ${PROJECT_NAME}
VERSION_MAJOR 0
VERSION_MINOR 0
VERSION_PATCH 0
VERSION_REVISION 1
COMPANY_NAME "COMPANY"
FILE_DESCRIPTION "Librairie ${PROJECT_NAME}.dll"
)
endif(MSVC)
[...]
add_library(${PROJECT_NAME} SHARED
${SRC_FILES}
${VersionFilesOutputVariable}
)
我的文件夹/platform/cmake/common/
内有 VersionResource.rc , VersionInfo.in 和 generate_product_version.cmake 。这些文件与上面的回购文件相同。
我已经阅读了许多帖子(fatal error CVT1100: duplicate resource. type:ICON, name:1 (C++, Visual Studio C++ 2010)和How to resolve CVT1100 in Visual Studio 2010 Ultimate?),它可能来自重复的file.rc或同一个变量(显然是VERSION),他们多次调用
我也会测试/INCREMENT:NO
或/MANIFEST:NO
,就像我在网上的其他帖子中看到的那样。
在我搜索任何严格称为VERSION
的变量或类似的变量之后,无论如何......我对rc文件不太满意。
请问我如何解决这个问题?
为什么突然它不起作用?
我使用cmake 3.5.2和Visual Studio 2015.我尝试在Debug和x64中编译。
感谢您的帮助。