CMake - set_property找不到TARGET xxx。也许它尚未创建

时间:2014-05-13 08:21:46

标签: linux properties set cmake

问候,我尝试做的是使用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”.

我现在搜索了一个解决方案或方法很长一段时间,但我得到的唯一结果是项目特定的,或者至少我认为它们是。

第196行的CMakeLists.txt的内容:

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,我可以提出任何建议。

1 个答案:

答案 0 :(得分: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中定义的函数,并可能添加一些项目特定的定义或链接标记。