首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cmake向gnuradio块添加第三方库?

如何使用cmake向gnuradio块添加第三方库?
EN

Stack Overflow用户
提问于 2017-07-29 21:49:40
回答 1查看 1.5K关注 0票数 1

在过去的两天里,我试图在gnuradio中创建新的块,但是当我尝试执行流图时,我经常会出错:

代码语言:javascript
复制
AttributeError: 'module' object has no attribute 'test'

我认为第三方库( opennn )存在一些问题,我试图在导入opennn头文件的project.In主源文件(test_impl.cc)中使用它。在funtion general_work中,我调用函数:

代码语言:javascript
复制
   int
    test_impl::general_work (int noutput_items,
                       gr_vector_int &ninput_items,
                       gr_vector_const_void_star &input_items,
                       gr_vector_void_star &output_items)
    {
      const float *in = (const float *) input_items[0];
      float *out = (float *) output_items[0];
       OpenNN::NeuralNetwork nn(8, 1, 1);

      // Do <+signal processing+>
      // Tell runtime system how many input items we consumed on
      // each input stream.
      consume_each (noutput_items);

      // Tell runtime system how many output items we produced.
      return noutput_items;
    }

我的lib/CMakeLists.txt ( lib文件夹中有自动生成的gnuradio块源文件和带有opennn库的dir):

代码语言:javascript
复制
########################################################################
# Setup library
########################################################################
include(GrPlatform) #define LIB_SUFFIX

include_directories(${Boost_INCLUDE_DIR})
link_directories(${Boost_LIBRARY_DIRS})

list(APPEND tutorial3_sources
    test_impl.cc
)

set(tutorial3_sources "${tutorial3_sources}" PARENT_SCOPE)
if(NOT tutorial3_sources)
    MESSAGE(STATUS "No C++ sources... skipping lib/")
    return()
endif(NOT tutorial3_sources)

add_library(gnuradio-tutorial3 SHARED ${tutorial3_sources})
target_link_libraries(gnuradio-tutorial3 ${Boost_LIBRARIES} ${GNURADIO_ALL_LIBRARIES})
set_target_properties(gnuradio-tutorial3 PROPERTIES DEFINE_SYMBOL "gnuradio_tutorial3_EXPORTS")

if(APPLE)
    set_target_properties(gnuradio-tutorial3 PROPERTIES
        INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
    )
endif(APPLE)
########################################################################
# Install built library files
########################################################################
include(GrMiscUtils)
GR_LIBRARY_FOO(gnuradio-tutorial3 RUNTIME_COMPONENT "tutorial3_runtime" DEVEL_COMPONENT "tutorial3_devel")

########################################################################
# Build and register unit test
########################################################################
include(GrTest)

include_directories(${CPPUNIT_INCLUDE_DIRS})

list(APPEND test_tutorial3_sources
    ${CMAKE_CURRENT_SOURCE_DIR}/test_tutorial3.cc
    ${CMAKE_CURRENT_SOURCE_DIR}/qa_tutorial3.cc
)

add_executable(test-tutorial3 ${test_tutorial3_sources})

target_link_libraries(
  test-tutorial3
  ${GNURADIO_RUNTIME_LIBRARIES}
  ${Boost_LIBRARIES}
  ${CPPUNIT_LIBRARIES}
  gnuradio-tutorial3
)

GR_ADD_TEST(test_tutorial3 test-tutorial3)

########################################################################
# Print summary
########################################################################
message(STATUS "Using install prefix: ${CMAKE_INSTALL_PREFIX}")
message(STATUS "Building for version: ${VERSION} / ${LIBVER}")

我尝试添加以下代码:

代码语言:javascript
复制
########################################################################
# Install opennn library files
########################################################################
add_subdirectory(tinyxml2)
add_subdirectory(opennn)
include_directories(opennn)
add_subdirectory(examples)
add_subdirectory(blank)
add_subdirectory(tests)
include(CPack)

老实说,我尝试过以多种方式修改这个CMake文件,但我总是会收到这个错误。

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 12:22:31

你的问题给了我解决问题的线索,我认为这和这里描述的一样,但我不确定。在我的例子中,解决方案是将缺少的外部库yaml-cpp添加到文件lib/CMakeLists.txt中的target_link_libraries指令中,用于target_link_libraries模块。

target_link_libraries(gnuradio-AUK gnuradio::gnuradio-runtime yaml-cpp)

我添加了一些C++ YAML代码来解析配置文件。它编译得很好,但却给出了一个令人费解的信息:

AttributeError: module ... has no attribute ...

现在都修好了。非常感谢你提供的线索。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45394381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档