[cfe-users] On a OS X Mavericks system, clang-modernize can't find #include files

Robert J Goedman goedman at icloud.com
Mon Nov 25 10:14:45 PST 2013


Hi,

After watching Chandler Carruth's http://channel9.msdn.com/Events/GoingNative/2013/The-Care-and-Feeding-of-C-s-Dragons I decided to try the format and modernize examples in the middle of his presentation. After installing the latest LLVM suite, all examples without #include files work fine, both in clang-format and clang-modernize. Very impressive.

Using the native (Apple, Xcode) toolchain, I can cmake, make and run the example programs in a build directory directly under the source directory, e,g. clang-tools/vector/build under clang-tools/vector which contains vector.cpp and CMakeLists.txt.

But clang-modernize will fail *if* it contains a template based #include, e.g. Chandler's loop-convert example based on a small vector<int> loop.
Somehow I can't figure out how to specify the right flags for the compiler/linker in cmakelist.txt.

Any pointers appreciated!

Thanks,
Rob J. Goedman
goedman at icloud.com

------------/clang-tools/vector/vector.cpp------------

#include <vector>
#include <iostream>

int sum(const std::vector<int> &numbers) {
  int result = 0;
  for (std::vector<int>::const_iterator it = numbers.begin();
       it != numbers.end(); ++it) {
    result += *it;
  }
  return result;
}

int main() {
  std::vector<int> nums = { 1, 5, 6, 38 };
  std::cout << sum(nums) << std::endl;
}

-------------/clang-tools/vector/CMakeLists.Txt

project(foundations)
cmake_minimum_required(VERSION 2.8)

include_directories($ENV{GMOCK_HOME}/include $ENV{GMOCK_HOME}/gtest/include)
link_directories($ENV{GMOCK_HOME}/mybuild $ENV{GMOCK_HOME}/gtest/mybuild)
add_definitions(-stdlib=libc++ -std=c++11)

set(sources 
  vector.cpp
)

add_executable(test ${sources})
target_link_libraries(test pthread)
target_link_libraries(test gmock)
target_link_libraries(test gtest)

-----------------------

robs-15inch-2:build rob$ rm -rf *
robs-15inch-2:build rob$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
-- The C compiler identification is Clang 5.0.0
-- The CXX compiler identification is Clang 5.0.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/rob/Projects/Languages/Cpp/clang_tools/vector/build
robs-15inch-2:build rob$ make
Scanning dependencies of target test
[100%] Building CXX object CMakeFiles/test.dir/vector.cpp.o
Linking CXX executable test
[100%] Built target test
robs-15inch-2:build rob$ ./test
50
robs-15inch-2:build rob$ clang-format -style LLVM -i ../vector.cpp 
robs-15inch-2:build rob$ clang-modernize -summary -p . -include ..
Parse: /Users/rob/Projects/Languages/Cpp/clang_tools/vector
/Users/rob/Projects/Languages/Cpp/clang_tools/vector/vector.cpp:1:10: fatal error: 'vector' file not found
#include <vector>
         ^
1 error generated.
Error while processing /Users/rob/Projects/Languages/Cpp/clang_tools/vector/vector.cpp.
Error encountered during translation.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-users/attachments/20131125/4463f74f/attachment.html>


More information about the cfe-users mailing list