【CMake报错】Cannot specify compile definitions for target “PRIVATE“ which is not built...

简介: 【CMake报错】Cannot specify compile definitions for target “PRIVATE“ which is not built...


👉博__主👈:米码收割机

👉技__能👈:C++/Python语言

👉公众号👈:测试开发自动化【获取源码+商业合作】

👉荣__誉👈:阿里云博客专家博主、51CTO技术博主

👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。



报错:Cannot specify compile definitions for target “PRIVATE” which is not built by this project.

1)报错内容

CMake Error at CMakeLists.txt:72 (target_link_directories):

Cannot specify link directories for target “PRIVATE” which is not built by this project.

CMake Error at CMakeLists.txt:73 (target_compile_definitions):

Cannot specify compile definitions for target “PRIVATE” which is not built by this project.

CMake Error at CMakeLists.txt:80 (target_link_directories): Cannot

specify link directories for target “PRIVATE” which is not built by this project.

2)解决方案

这个错误提示的是在CMakeLists.txt文件中,试图为一个名为"PRIVATE"的目标设置属性,但是这个目标在项目中并不存在。

实际上,“PRIVATE”、"PUBLIC"和"INTERFACE"是target_*命令中的关键字,用于指定如何传递这些属性。

错误可能是因为没有正确地为target_*命令提供目标名称,或者目标名称和关键字的顺序被弄反了。

错误情况一

如果存在以下代码:

target_include_directories(PRIVATE ${CMAKE_SOURCE_DIR}/include)

应该更正为:

target_include_directories(YourActualTargetName PRIVATE ${CMAKE_SOURCE_DIR}/include)

错误情况二

如果存在以下代码:

target_link_directories(${ProjectName} PRIVATE ${RELEASE_LIB_DIR})

应该更正为:

target_link_directories(YourActualTargetName PRIVATE ${RELEASE_LIB_DIR})

其中,YourActualTargetName是你要设置属性的实际目标名称,



相关文章
基于GA遗传优化的TSP问题最优路线规划matlab仿真
本项目使用遗传算法(GA)解决旅行商问题(TSP),目标是在访问一系列城市后返回起点的最短路径。TSP属于NP-难问题,启发式方法尤其GA在此类问题上表现出色。项目在MATLAB 2022a中实现,通过编码、初始化种群、适应度评估、选择、交叉与变异等步骤,最终展示适应度收敛曲线及最优路径。
504 29
|
Android开发
Android中SurfaceView的双缓冲机制和普通View叠加问题解决办法
本文介绍了 Android 平台上的 SurfaceView,这是一种高效的图形渲染控件,尤其适用于视频播放、游戏和图形动画等场景。文章详细解释了其双缓冲机制,该机制通过前后缓冲区交换来减少图像闪烁,提升视觉体验。然而,SurfaceView 与普通 View 叠加时可能存在 Z-Order 不一致、同步问题及混合渲染难题。文中提供了使用 TextureView、调整 Z-Order 和创建自定义组合控件等多种解决方案。
493 9
|
机器学习/深度学习 数据采集 自动驾驶
深度学习之相机内参标定
相机内参标定(Camera Intrinsic Calibration)是计算机视觉中的关键步骤,用于确定相机的内部参数(如焦距、主点位置、畸变系数等)。传统的标定方法依赖于已知尺寸的标定板,通常需要手动操作,繁琐且耗时。基于深度学习的方法则通过自动化处理,提供了一种高效、准确的内参标定方式。
683 13
|
存储 缓存 算法
深入了解Memcached:缓存技术的利器
Memcached是一个开源的高性能分布式内存缓存系统,用于加速动态Web应用。它通过将数据库查询结果、API调用结果或其他数据缓存到内存中,减少对数据库的访问频率,从而提高应用的响应速度。本文详细介绍了Memcached的基本原理、架构、安装配置、使用方法、测试方法以及应用场景。通过Memcached,开发者可以有效提升Web应用的性能,减少数据库负载,改善用户体验。
447 5
|
API 开发工具 Android开发
调用Android原生@SystemApi、@Hide方法
调用Android原生@SystemApi、@Hide方法
1005 1
|
SQL 安全 数据库
掌握SQL:数据库操作与查询的精髓
一、引言 在数据驱动的时代,数据库是任何组织或项目不可或缺的一部分
|
机器学习/深度学习 算法 数据挖掘
使用MICE进行缺失值的填充处理
在我们进行机器学习时,处理缺失数据是非常重要的,因为缺失数据可能会导致分析结果不准确,严重时甚至可能产生偏差。处理缺失数据是保证数据分析准确性和可靠性的重要步骤,有助于确保分析结果的可信度和可解释性。
728 2
|
JavaScript
查看NodeJs版本和查看NPM版本
查看NodeJs版本和查看NPM版本
601 0
查看NodeJs版本和查看NPM版本
|
Shell
删除右键“在 Visual Studio 中打开”选项
删除右键“在 Visual Studio 中打开”选项
2335 0