CMake 看不到源文件,找不到#includes

CMake can't see source file, can't find #includes

我第一次尝试使用 CLion (Mac) 和 CMake。 我的项目根文件夹是 /ref。它被标记为源根。 /ref 中的所有源代码文件夹都被标记为库根目录,除了 /ref/src,我的 main.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 说 "Cannot find source file: /src/main.cpp"。如果我只尝试 main.cpp,我会收到相同的消息。

此外,在 main.cpp 文件中,所有 #include 语句都表示 "cannot find" 引用——即使是像 #include <iostream> 这样明显的语句。

另外,谁能推荐一个学习CMake的好地方?

/src 更改为 src。 '/' 使它在根目录中查找文件目录。

set(SOURCE_FILES src/main.cpp)

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

这是修复问题的修订 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 中将目录标记为 "library root" 不会导致搜索它们;你必须有一个 include_directories(...) 命令。 (CLion documentation 似乎表明将目录标记为 library root 应该有效,但也许 CMake 和 CMakeLists.txt 文件会覆盖此功能——任何见解都值得赞赏。)