小编Mar*_*n M的帖子

可以将导入的库添加到target_link_libraries,它也负责包含目录吗?

不知何故,我正在努力找出是否可以在CMake中定义导入的库,指定目标属性(include_directories和库路径),并希望一旦我将该项目添加到另一个项目中的target_link_libraries,CMake将附加包含目录.

假设我在一个名为Module-Conf.cmake的文件中有一个导入的库:

add_library(mymodule STATIC IMPORTED)
set_target_properties(mymodule PROPERTIES IMPORTED_LOCATION "${OUTPUT_DIR}/lib")
set_target_properties(mymodule PROPERTIES INCLUDE_DIRECTORIES "${OUTPUT_DIR}/include")
Run Code Online (Sandbox Code Playgroud)

在一个项目中我添加了依赖项:

include(Module-Conf)
target_link_libraries(${PROJECT_NAME} mymodule)
Run Code Online (Sandbox Code Playgroud)

CMake会将include_directories属性附加到包含路径吗?现在我看不到路径所以我似乎必须自己使用get_target_property来做这个?

问题:我可以使用一些CMake魔法自动将include附加到另一个项目的include目录中吗?

非常感谢.马丁

c++ cmake include

15
推荐指数
1
解决办法
7313
查看次数

如何从add_custom_target/command调用CMake函数?

是否有可能调用一个函数的CMake出的add_custom_target还是add_custom_command

我知道我可以将CMake函数移动到Python(或其他)脚本并从add_custom_target/中调用它,command但我想避免在现有的CMake基础上使用大量脚本.

我想要实现的是使用CPack生成二进制工件的zip包并将其发布到工件库中.对于发布部分,我已经创建了CMake函数,但现在我需要将打包和发布结合在一起.

感谢您提前提供任何帮助/提示.

c++ cmake target add-custom-command

15
推荐指数
1
解决办法
7433
查看次数

存储库中的新工件版本何时可用时通知?

有没有办法通知 CI 系统有关工件的新发布版本并触发构建?

场景是这样的:

  • 负责组件 C 的 A 团队的开发人员提交了更改
  • CI 被触发、构建并运行测试
  • 测试通过后,二进制文件将发布到工件存储库 (Nexus)
  • 另一个 CI 作业收到此通知并触发构建,其中测试其他组件 + 新组件 C 版本(集成测试)。

市场上有没有支持这种通知机制的插件?我还没找到Nexus(Ivy)这样的工具?我唯一找到的是 JFrog 的 Artifactory 插件,您可以直接从 Teamcity 发布。

谢谢,马丁

notifications continuous-integration nexus sonatype

5
推荐指数
1
解决办法
2809
查看次数

如何提取Boost进程间库

我有一个小项目,只使用boost::interprocessBoost库中的部分.

是否有一种简单的方法可以仅为库的那一部分提取所有需要的文件?

boost

4
推荐指数
1
解决办法
1303
查看次数

在调用mock上的预期方法时调用方法

我有以下场景:

class InterfaceA;
class InterfaceB;
class InterfaceC;


class InterfaceA
{
  virtual void foo(InterfaceC&) = 0;
};

class InterfaceB
{
  virtual void bar() = 0;
};

class InterfaceC
{
  virtual void bla() = 0;
};

// MOCKs

class MockA : public InterfaceA
{
  public:
    MOCK_METHOD0(foo, void(InterfaceC&));
};

class MockB : public InterfaceB
{
  public:
    MOCK_METHOD0(bar, void());
};


class ImplC : public InterfaceC
{
  public:
    ImplC(InterfaceA& a, Interface& b) : m_a(a), m_b(b) {}

    void doSomething() {
      m_a.foo(*this);
    }

    virtual void bla()
    { …

mocking expectations googlemock

3
推荐指数
1
解决办法
1万
查看次数