gpt4 book ai didi

cmake - CMake为静态库生成-L -l <​​lib>链接标志

转载 作者:行者123 更新时间:2023-12-04 12:48:28 25 4
gpt4 key购买 nike

我使用CMake 2.8来构建基于MQX OS的应用程序(使用CodeWarrior)。
CMake项目基本上建立了一组静态库(比如LIB1和LIB2)。
然后,我在最终的可执行cmake规则中引用这些库:

target_add_executable(X ${some_sources})
target_link_libraries(X LIB1 LIB2)

我的问题是,在多个库中定义了一些符号。
因此,链接命令如下:
mwldarm <args> -o <output> <objects> /path/to1/libLIB1.a /path/to2/libLIB2.a

会导致符号错误的多重定义。
相反,我希望CMake生成如下链接命令:
mwldarm <args> -o <output> <objects> -L/path/to1 -L/path/to2 -lLIB -lLIB2

问题:如何从CMAKE获取以下变量?
  • 库目录标志(例如: -L/path/to1 -L/path/to2)
  • 库链接标志(例如:-lLIB -lLIB2)

  • 我已经阅读了有关RPATH的内容,但似乎只涉及共享库。我对吗?

    感谢前进。
    我很感激。

    最佳答案

    似乎CMP0003策略可能是您所需要的。

    要使用它,请在CMakeLists.txt的开头附近添加以下行:

    CMAKE_POLICY( SET CMP0003 OLD )

    另一种可能性是直接设置依赖关系和搜索路径,但这不是最干净的方法。假设您的库名为 liba.alibb.a,则:
    LINK_DIRECTORIES( ${paths_to_search_for} )
    TARGET_ADD_EXECUTABLE(X ${some_sources} )
    ADD_DEPENDENCIES(X LIB1 LIB2)
    TARGET_LINK_LIBRARIES(X a b )

    请注意,在这种情况下, ab不是cmake目标,因此需要一些机制来正确设置依赖项。

    关于cmake - CMake为静态库生成-L <path> -l <​​lib>链接标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14822794/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com