链接库作为 CMAKE 中工具链文件中标志的一部分
linking librarys as a part of flags in toolchain file in cmake
我试图将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})
- I2C 文件描述符上的 I2C 总线可写/可读标志
- 生成文件中隐式规则中的 -c 标志出错
- 文件模式标志"ios::app"是否用于删除文件(如果文件已存在)?
- 使用-L和-L标志与将库文件作为输入进行比较
- 链接库作为 CMAKE 中工具链文件中标志的一部分
- 如何在图像位中设置标志以标记音频文件的结尾
- 是否可以使用 GCC 编译具有特定编译器标志的代码文件的一部分?
- C++ 17:pthread的生成文件标志
- 当自动编译对象文件时,如何使我的makefile使用我的cflags标志
- 尽管使用-i标志,但仍未使用此类文件或目录
- 检查文件是否在 Makefile 中使用某些标志进行编译
- 用错误的标志顺序编译后,是否删除*.cpp文件
- 制作文件后启用cmake选项/标志
- 标志以将IPDB和IOBJ文件从链接时间代码生成优化(LTCG)移动
- C 11 -Chrono文件的编译器标志找不到
- 覆盖单个文件的编译标志
- 重构具有不同标志的对象文件的makefile
- 如何在更改生成文件标志时强制重新编译
- NDK文件标志中的Android.mk
- make OBJECT文件标志不工作