我正在开发一个 Cray 系统,该系统需要在找到动态库之前传递“-dynamic”。就我而言,我正在尝试与 libtiff 链接。该命令cc main.cpp -ltiff
失败,文件未找到但cc main.cpp -dynamic -ltiff
有效。我相信这个文件未找到的行为会导致 CMake 的find_package
.
当我使用 CMake(版本 3.5.2)并-DCMAKE_EXE_LINKER_FLAGS:STRING="-dynamic"
从命令行传递时find_package(TIFF)
。但是当我像这样在 CMakeLists.txt 中设置它时:
set(CMAKE_EXE_LINKER_FLAGS "-dynamic")
find_package(TIFF REQUIRED)
它找不到libtiff。但如果我尝试:
set(CMAKE_EXE_LINKER_FLAGS "-dynamic" CACHE STRING "" FORCE)
find_package(TIFF REQUIRED)
它第一次失败,但将“-dynamic”放入缓存中,然后在第二次运行时工作。如果我手动设置TIFF_LIBRARY_RELEASE
为指向 .so 那么find_package
也可以工作(通过填写其余的变量)。
在不将其作为参数传递的情况下执行此操作的正确方法是什么?