我有一个将/IMPLIB发送到Windows上的链接器的CMake构建。在我的情况下,这是一个问题,因为implib的参数与输入文件之一的路径相同。
在我看来,使用Visual Studio进行构建时,CMake总是会发出/IMPLIB,并且无法修改传递的参数。
有没有办法控制这种行为?

最佳答案

查看CMake的源 cmComputeLinkInformation.cxx ,如果设置了/implib:...,则只会添加有效的CMAKE_IMPORT_LIBRARY_SUFFIX选项:



因此,在以下测试中,从我的可执行项目的选项中删除了导入库:

cmake_minimum_required(VERSION 3.0)

project(NoImpLib CXX)

unset(CMAKE_IMPORT_LIBRARY_SUFFIX)

file(WRITE main.cpp "int main() { return 0; }")
add_executable(${PROJECT_NAME} main.cpp)

VS特定的替代方法-因为未按其他方式/按配置设置此选项,所以将使用以下命令添加全局属性IgnoreImportLibrary:
set_target_properties(${PROJECT_NAME} PROPERTIES VS_GLOBAL_IgnoreImportLibrary "true")

10-07 13:35