Созданный в CMake проект Eclipse CDT не имеет системных включений - PullRequest
5 голосов
/ 23 июня 2011

Моя проблема похожа на это: http://www.eclipse.org/forums/index.php/m/649323/

Я создал проект cmake и использовал

cmake .. -G "Eclipse CDT4 - Unix Makefiles"

для создания проекта Eclipse CDT4.

Но в CDT IDE стандартные пути включения не указаны, а все заголовочные файлы STL или встроенные в систему директивы помечены как «не могут быть разрешены», поэтому «Открытое объявление» или другая большая операция не может быть сделано.

Однако я мог бы скомпилировать его без проблем.

У моего коллеги также есть проект cmake, но он очень сложный. Проект CDT, сгенерированный из его проекта cmake, ДОЛЖЕН включать систему. Но его cmake слишком сложен, и он сказал мне, что не сделал ничего особенного, чтобы включить системные пути.

Кто-нибудь может мне помочь? Спасибо.

My Main CMakeLists.txt:

CMake_Minimum_Required(VERSION 2.8)

# Some settings
Set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
CMake_Policy(SET CMP0015 NEW)

#Include(CMakeProcedures.cmake)
#CheckEnvironment()

# Set the compiler and its version if needed

# Create the project
Project(MyProjectName CXX)

# Set the compiler
Set(CMAKE_CXX_COMPILER /usr/bin/g++)

# Detect whether we are in-source
If (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
    Message(FATAL_ERROR "In-source building is not allowed! Please create a 'build' folder and then do 'cd build; cmake ..'")
EndIf()

# Set the output dirs
Set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
Set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

# Add source subdirs to the build
Add_Subdirectory(src)
# Add_Subdirectory(test EXCLUDE_FROM_ALL)

Peter

Один из обходных путей - добавить их вручную в IDT CDT:

/usr/include/c++/4.5
/usr/include/c++/4.5/backward
/usr/include/c++/4.5/i686-linux-gnu
/usr/include/i386-linux-gnu
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/include-fixed
/usr/local/include

Но это не решение.

1 Ответ

1 голос
/ 24 июня 2011

Я наконец понял, что эта строка вызывает проблему:

Project(MyProjectName CXX)

Если мы удалим необязательный параметр CXX, жизнь будет хорошей.

Может кто-нибудь сказать мне почему?*

Питер

...