相关疑难解决方法(0)

如何在不同的CMake文件之间共享变量

如何在不同的CMake文件之间共享变量,并显示以下示例来说明我的问题:

主要

cmake_minimum_required(VERSION 2.6)
project(test)
set(Var3 "Global variable")

add_subdirectory(${test_SOURCE_DIR}/exe)
add_subdirectory(${test_SOURCE_DIR}/dll)
Run Code Online (Sandbox Code Playgroud)

EXE文件

set(Var1 "this is variable 1")
set(Var1 ${Var1} " added to varible 1")
message(STATUS ${Var1})
Run Code Online (Sandbox Code Playgroud)

DLL文件

set(Var2 "this is variable 2")
message(STATUS ${Var2})
message(STATUS ${Var1})
message(STATUS ${Var3})
Run Code Online (Sandbox Code Playgroud)

在这个例子中,VAR3可以的CMake的文件中可以看出exe,并dll因为它是在定义Main.但是,exe将不会在其中定义Var1 dll.我只是很好奇:有没有办法让var1在exeobservable中定义dll?

cmake

13
推荐指数
2
解决办法
8198
查看次数

将一个项目链接到另一个 CMAKE

我正在构建一个包含很多子项目的项目。例如作为...

LibA (build as shared library)

LibB (depends on LibA & build as shared library)

AppB (depends on LinB)
Run Code Online (Sandbox Code Playgroud)

目录结构(我想要的)是...

bin/
output/
src/libA/
src/libB/
src/appB/
Run Code Online (Sandbox Code Playgroud)

每个子项目(LibA、LibB 和 AppB)都有自己的 CMakeLists.txt 文件。

我想 ..

1. Build LibA as shared library (I know how to do it)

2. Build LibB as shared library with linking of LibA (Don't Know how to do)
   Explanation: When I start building LibB, 
                LibA build first and 
                ready to link for LibB 
                when LibB ready to finish

3. …
Run Code Online (Sandbox Code Playgroud)

cmake

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

Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

我正在学习使用 Cmake 构建一个库。构建库的代码结构如下:

include:  
   Test.hpp       
   ITest.hpp     // interface
src:
   Test.cpp
   ITest.cpp
Run Code Online (Sandbox Code Playgroud)

在CMakeLists.txt中,我用来建库的语句是:

file(GLOB SRC_LIST "src/iTest.cpp" "src/Test.cpp" "include/Test.hpp"
        "include/iTest.hpp"  "include/deadreckoning.hpp")
add_library(test SHARED ${SRC_LIST})
target_link_libraries( test ${OpenCV_LIBS})  // link opencv libs to libtest.so
Run Code Online (Sandbox Code Playgroud)

然后我又写了一个测试文件(main.cpp),把库复制粘贴到同一个目录下,链接库,调用库里面的函数。这个 CMakeLists.txt 是

cmake_minimum_required(VERSION 2.8)
project(myapp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -O3 -Wall -ftree-vectorize -ffast-math -funroll-loops")

add_executable(myapp main.cpp)
target_link_libraries(myapp "/home/labUser/test_lib/libtest.so")
Run Code Online (Sandbox Code Playgroud)

如果我不将头文件包含在库中,则 main.cpp 将成功编译并运行:

#include <iostream>
using namespace std;

int main(){
    cout << "hello world" << endl;
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

但是当我包含头文件时#include "ITest.hpp",它有错误:

fatal error: iTest.hpp: No such file or …
Run Code Online (Sandbox Code Playgroud)

c++ cmake shared-libraries

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

标签 统计

cmake ×3

c++ ×1

shared-libraries ×1