链接库作为 CMAKE 中工具链文件中标志的一部分

linking librarys as a part of flags in toolchain file in cmake

本文关键字:文件 标志 一部分 工具 CMAKE 链接      更新时间:2023-10-16

我试图将PROFILE添加到CMAKE_BUILD_TYPES中。为此,我需要将-finstrument-functions添加到工具链文件中的CMAKE_CXX_FLAGS中.txt并通过target_link_libraries将所属库与 CMakeList 中的绝对路径链接。到目前为止一切顺利,没有问题。

但是在刷新构建信息时,cmake 会检查编译器是否完成它的工作。现在"无法编译一个简单的测试程序",因为缺少所需的库,该库稍后在 CMakeList 中链接。

所以我评论了-finstrument-functions标志,测试程序可以编译。

我尝试过: - 使用 -L -l 将库和路径设置为 CXX 标志的一部分:

  • 使用link_directories(<dir>)命令以及SET(CMAKE_LINK_DIRECTORIES_BEFORE <Path> )SET(CMAKE_LIBRARY_PATH <Path>)

  • 在工具链文件中设置变量,稍后在 cmakelist 中调用它们:

SET(ADDITIONAL_PROFILE_LIBRARY  "$ENV{QNX_BASE}/target/qnx7/armle-v7/usr/liblibprofilingS.a")
SET(ADDITIONAL_PROFILE_FLAGS "-finstrument-functions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "${ADDITIONAL_PROFILE_FLAGS}")
add_executable(toolchainTester main.cpp)
target_link_libraries(toolchainTester ${ADDITIONAL_PROFILE_LIBRARY})

但随后出现错误:mingw32-make.exe[3]: *** No rule to make target 'C:/qnx700/target/qnx7/armle-v7/usr/liblibprofilingS.a', needed by '../out/profileout'. Stop.

还有什么想法吗?提前谢谢。

如果有人在那里寻找相同的解决方法,如何为不同的配置文件管理不同的标志和库,这是一种工作方法:

工具链文件中的第一个设置变量

SET(ADDITIONAL_PROFILE_LIBRARY  "$ENV{QNX_BASE}/target/qnx7/armle-v7/usr/lib/libprofilingS.a")
SET(ADDITIONAL_CXX_FLAGS "-finstrument-functions")

在CMakeList中调用/推翻它们.txt

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "${ADDITIONAL_CXX_FLAGS}")
add_executable(toolchainTester main.cpp)
target_link_libraries(toolchainTester ${ADDITIONAL_PROFILE_LIBRARY})