CMake无法查看源文件,无法找到#includes

时间:2018-04-21 18:03:10

标签: c++ macos cmake clion

我第一次尝试使用CLion(Mac)和CMake。 我的项目根文件夹是/ref。它被标记为源根。 /ref中的所有源代码文件夹都标记为库根除/ref/srcmain.c所在的位置。

这是我的CMakeLists.txt

cmake_minimum_required(VERSION 3.6)
project(miniFEPosit)
set(CMAKE_CXX_STANDARD 11)

set(SOURCE_FILES /src/main.cpp)            # Add main.cpp file of project root directory
add_executable(miniFEPosit ${SOURCE_FILES})

当我尝试构建时,CLion说"找不到源文件:/src/main.cpp"。如果我只尝试main.cpp,我会收到相同的消息。

此外,在main.cpp文件中,所有#include语句都说&#34;找不到&#34;引用 - 甚至是明显的#include <iostream>

另外,任何人都可以推荐一个学习CMake的好地方吗?

2 个答案:

答案 0 :(得分:2)

/src更改为src。 &#39; /&#39;使它在根目录中查找文件目录。

set(SOURCE_FILES src/main.cpp)

关于包含文件,您需要添加包含包含所需头文件的项目目录的include_directories()子句。这使cmake可以正确地向make和编译器提供它们。

答案 1 :(得分:1)

以下是修正问题的修订后的CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.6)         # CMake version check
project(miniFEPosit)                        # Create project 
set(CMAKE_CXX_STANDARD 11)                  # Enable c++11 standard

set(SOURCE_FILES src/main.cpp)              # Add src/main.cpp file of project root directory as source file

include_directories(basic fem posit utils)  # subdirectories of project root /ref 

add_executable(miniFEPosit ${SOURCE_FILES}) # Add executable target

找到main.cpp的关键是消除src/main.cpp之前的斜杠,这显然会导致它期望绝对路径。在CLion中将目录标记为“库根”不会导致它们被搜索;你必须有一个include_directories(...)命令。 (CLion documentation似乎表示将目录标记为library root应该有效,但CMake和CMakeLists.txt文件可能会覆盖此功能 - 任何洞察力都会受到赞赏。)