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
文件会覆盖此功能——任何见解都值得赞赏。)
我第一次尝试使用 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
文件会覆盖此功能——任何见解都值得赞赏。)