相关疑难解决方法(0)

在CMake中使用GLOB或每个文件单独指定源文件是否更好?

CMake提供了几种指定目标源文件的方法.一种是使用globbing(文档),例如:

FILE(GLOB MY_SRCS dir/*)
Run Code Online (Sandbox Code Playgroud)

另一个是单独指定每个文件.

哪种方式更喜欢?Globbing似乎很容易,但我听说它有一些缺点.

cmake

145
推荐指数
4
解决办法
7万
查看次数

如何使用Cmake构建系统在目录中使用所有*.c文件?

我想在目录下找到所有.c文件,并将它们全部添加到SRC文件以在cmake中编译.我怎么能在CMakeList.txt中这样做.

对于我可以创建的常规makefile

SPECIFIED_SRC_FILE  = $(foreach d,$(SPECIFIED_SRC_DIRS),$(wildcard $(addprefix $(d)/*,*.c)))
Run Code Online (Sandbox Code Playgroud)

但是我无法在CMakeList.txt中做到这样的事情.

makefile cmake

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

Xcode - 自动将文件夹中的所有文件添加到目标

在Xcode中,有没有办法指定文件夹中的所有文件都是由目标编译的.例如.'Test'目标自动编译'Tests'文件夹中的所有文件,而'App'目标编译'Sources'文件夹中的所有内容.

今天,我这样做的方法是每次创建一个文件到目标.由于文件已经组织在正确的文件夹中,因此感觉有点容易出错和冗余.

谢谢.

build-automation xcode build-process build

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

如何将现有的源文件和头文件添加到CLIon项目中

我正在尝试将现有的源文件添加到我的Clion项目中,但在将它们添加(复制并粘贴)到项目后,这些文件未添加到CMakeLists文件中.此外,该文件夹是半透明的(灰色).

如何自动将新文件添加到CMakeList?

cmake clion

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

将文件夹下的所有文件添加到CMake glob?

我刚看过这个:

CMake - 自动将文件夹中的所有文件添加到目标?

答案表明文件为glob,例如:

file(GLOB "*.h" "*.cpp")
Run Code Online (Sandbox Code Playgroud)

现在,如果我希望我的目标依赖于特定文件夹下某种类型的所有文件 - 可能在多个子文件夹中,该怎么办?我试过用

execute_process(COMMAND find src/baz/ -name "*.cpp" OUTPUT_VARIABLE BAR)
Run Code Online (Sandbox Code Playgroud)

然后

add_executable(foo ${BAR}
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

找不到源文件:

  src/baz/some/file/here

src/baz/some/other_file/here

src/baz/some/other_file/here2
Run Code Online (Sandbox Code Playgroud)

(是的,有那个间距.)

我在这做错了什么?

glob cmake build-dependencies

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

如何在'CMakeLists.txt'中使用add_library将整个文件(.cpp,.h等)包含在目录中

在我的项目中,我使用的是cpp和.h文件,它们都在不同的文件夹中

|-src
  |-main
   |-java
   |-cpp
    |-native-lib.cpp
    |-library-1
      |-include
        |-lib11.h
        |-lib12.h
        |-... 
    |-library-2
      |-include
        |-lib21.h
        |-lib22.h
        |-... 
Run Code Online (Sandbox Code Playgroud)

在当前版本中我将每个文件添加到 'CMakeLists.txt'

...

add_library(# Sets the name of the library.
            native-lib

            # Sets the library as a shared library.
            SHARED

            # Provides a relative path to your source file(s).



            src/main/cpp/native-lib.cpp
            src/main/cpp/library-1/include/lib10.h
            src/main/cpp/library-1/include/lib11.h
            src/main/cpp/library-1/include/lib12.h
            src/main/cpp/library-1/include/lib13.h
            ...

            src/main/cpp/library-2/include/lib21.h
            src/main/cpp/library-2/include/lib22.h
            src/main/cpp/library-2/include/lib23.h
            ...

)
...
Run Code Online (Sandbox Code Playgroud)

我尝试添加如下

...

add_library(# Sets the name of the library.
            native-lib

            # Sets the library as a shared library.
            SHARED

            # Provides a relative …
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk android-studio-2.3

9
推荐指数
1
解决办法
5477
查看次数

如何在另一个文件夹中添加源文件

我正在使用cmake在C++中构建我的项目.假设我的Source文件夹中有以下目录

Source
  |_Dir1
  |   |_Class.cpp
  |   |_Class.hpp
  |
  |_Dir2
      |_Main.cpp
Run Code Online (Sandbox Code Playgroud)

在Dir1中有一个包含其头文件和实现文件的类(Class.cpp和Class.hpp).

在Dir2中,主要的应用程序在Dir1中使用该类

告诉Dir2中的CMakeLists使用Dir1/Class.cpp文件构建可执行文件的好方法是什么?

编辑:更具体地说,我想定义Class.cpp的源文件必须在Dir1的CMakeLists.txt中使用,而不是在Dir2中.以另一种方式这样做对我来说是完全错误的并且很难使用,所以如果有理由他们强迫我这样做,那么对这个主题的一些澄清就会很好.

我目前正在做的是对Dir2/CMakeLists.txt中的Class.cpp文件位置进行硬编码,但是当我有一堆类在一起进行交互时,这只是不扩展.

cmake

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