CMake - set_property 找不到目标 xxx。也许还没有被创建

问题描述 投票:0回答:1

您好,我想做的是使用 CMake 和 CMakeLists 将现有的 Windows 应用程序移植到 Linux,这是我用 vcproj2cmake 脚本生成的 (https://github.com/sixman9/vcproj2cmake)。

使用 CMakeLists.txt 和 CMake,我能够成功地将 VS 2005 项目移植到 VS 2010。现在我尝试将同一个 VS 2005 项目移植到 Linux,以便我可以使用 KDevelope 对其进行编辑。

项目本身很小,我认为创建一个新项目并复制所有相关文件(如果可行的话)会更容易,问题是,它不仅是一个项目,而且是很多项目,因此我正在寻找一个以尽可能简单的方式移植项目的方法。

在 Linux 中,我能够使用 vcproj2cmake 脚本创建 CMakeLists.txt。下一步是使用 CMake 创建 KDevelope 项目。这就是我被困住的地方。

每次我尝试运行 CMake 时都会收到以下错误:

CMake Error at CMakeLists.txt: 196 (set_property) :
set_property could not find TARGET Test_Project. Perhaps it has not yet been
created.
Test_Project: installing /root/Desktop/Test_Project/vs8/CMakeLists. txt rebuilder (watching /root/Desktop/Test_Project/vs8/Test_Project. vcproj)
Configuring incomplete, errors occurred!
See also “/root/Desktop/Test_Project/vs8/CMakeFiles/CMakeOutput.log”.

我寻找解决方案或方法已经有一段时间了,但我得到的唯一结果是特定于项目的,或者至少我认为是。

CMakeLists.txt 第 196 行的内容:

set_property(TARGET Test_Project PROPERTY PROJECT_LABEL "Test_Project")

v2c_rebuild_on_update(Test_Project "${CMAKE_CURRENT_SOURCE_DIR}/Test_Project.vcproj" ${CMAKE_CURRENT_LIST_FILE} "vcproj2cmake.rb" ".")

include(${V2C_HOOK_POST} OPTIONAL)

也许有更有效的方法将许多项目从 Windows 移植到 Linux,我愿意接受任何建议。

linux properties set cmake
1个回答
0
投票

如果没有您的项目,提供帮助有点困难 - 因为您正在使用第三方工具来转换 VC 项目,您应该询问该工具的作者。 :D

如果您要维护许多项目,我建议您选择一个可以创建跨平台(Windows/Linux)CMake 配置的项目,您可以将其重用于其他项目。

对于您正在构建的所有平台,大多数配置应该是相同的 - 区别应该是使用哪个生成器以及在最终可执行文件中链接哪些库(如果您正在构建一个)。生成器在运行 cmake 时指定。

在我看来,您应该尝试使用以下结构的源代码构建:

/$COMMON_DIR/CMakeLists.txt
/CMakeLists.txt
/src/
/build/
/build/vcX
/build/generate_vcX.bat
/build/linux
/build/generate_linux.sh 

$COMMON_DIR 应该包含您希望在所有项目中通用的 CMake 代码 - 例如为模块创建静态库的函数,该函数在 /src 中搜索文件,以及另一个可用于为特定平台添加可执行文件的函数.

项目根目录(我认为是存储库)中的 CMakeLists.txt 应调用 $COMMON_DIR 中定义的函数,并可能添加一些项目特定的定义或链接标志。

© www.soinside.com 2019 - 2024. All rights reserved.