【发布时间】:2021-06-25 17:52:49
【问题描述】:
我能够 CMake 使用 cmakelists.txt 文件构建这个 HelloWorld example project 并生成一个 Visual Studio 项目。
project(helloworld LANGUAGES C CXX)
cmake_minimum_required(VERSION 3.5)
find_package(Idlpp-cxx REQUIRED)
if (NOT TARGET CycloneDDS-CXX::ddscxx)
find_package(CycloneDDS-CXX REQUIRED)
endif()
# Convenience function, provided by the Idlpp-cxx that generates a CMake
# target for the given IDL file. The function calls Idlcpp-cxx to generate
# source files and compiles them into a library.
idl_ddscxx_generate(ddscxxHelloWorldData_lib "HelloWorldData.idl")
add_executable(ddscxxHelloworldPublisher publisher.cpp)
add_executable(ddscxxHelloworldSubscriber subscriber.cpp)
# Link both executables to idl data type library and ddscxx.
target_link_libraries(ddscxxHelloworldPublisher ddscxxHelloWorldData_lib CycloneDDS-CXX::ddscxx)
target_link_libraries(ddscxxHelloworldSubscriber ddscxxHelloWorldData_lib CycloneDDS-CXX::ddscxx)
set_property(TARGET ddscxxHelloworldPublisher PROPERTY CXX_STANDARD 11)
set_property(TARGET ddscxxHelloworldSubscriber PROPERTY CXX_STANDARD 11)
我需要在没有 cmakelists.txt 和 CMake 的情况下创建相同的项目
如何仅使用 Visual Studio 执行此操作? 在 Visual Studio 的 CMakelists.txt 中定义这些命令的位置如果我创建一个空的 c++ 项目
我已经尝试过这个制作一个空项目。
我不知道 idl_ddscxx_generate 和 target_link_libraries 如何在 VS 中执行......
idl_ddscxx_generate 如果 IDL 文件已更改,则必须运行 如果我将新的源文件添加到项目中,则需要 target_link_libraries....
【问题讨论】:
-
您尝试过创建项目吗?你在哪里卡住了?如果您已经使用 cmake,为什么不想使用它?
-
@Alan Birtles 如果我必须包含新的源文件,我必须将它们添加到 CMakelists。这是我在生产环境中无法做到的......
-
@Alan Birtles docs.microsoft.com/en-us/cpp/build/… ......我跟着这个,做了同样的事情,并将额外的 c++ 依赖项和链接器输入设置到空的 c++ VS 项目中......根据属性在我使用上面的 cmakelists.txt 文件创建的项目中
-
如果您使用的是 Visual Studio 项目,您还需要将新的源文件添加到这些项目中,我看不出有什么区别
-
@Alan Birtles 是的,但在这里我必须修改 cmakelist 和 CMake 构建......我需要避免这种情况
标签: visual-studio cmake