我有一个将/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")