0

我试图添加PROFILECMAKE_BUILD_TYPES. 为此,我需要添加-finstrument-functionsCMAKE_CXX_FLAGS工具链文件中,并将所属库与 CMakeLists.txt 中的绝对路径通过target_link_libraries. 到目前为止,一切都很好,没有问题。

但是在刷新构建信息时,cmake 会检查编译器是否仍然有效。而现在“无法编译简单的测试程序”,由于缺少所需的库,该库稍后在 CMakeLists 中链接。

所以我评论了这个-finstrument-functions标志并且可以编译测试程序。

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

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

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

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.

有没有人有更多的想法?提前致谢。

4

1 回答 1

0

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

首先在工具链文件中设置变量

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

在 CMakeLists.txt 中调用/覆盖它们

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "${ADDITIONAL_CXX_FLAGS}")

add_executable(toolchainTester main.cpp)

target_link_libraries(toolchainTester ${ADDITIONAL_PROFILE_LIBRARY})
于 2019-08-30T12:09:26.193 回答