[CMake] nonstandard C++ source filename extension
From what I can glean online, I’ve tried this: set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) add_executable(foo foo.bar) set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) but it doesn’t work. What am I missing? 0 Mon 20:16:15 yost 1181 Z% cat CMakeLists.txt cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(asm CXX) set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) add_executable(foo foo.bar) set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) 0 Mon 20:16:43 yost 1182 Z% cat foo.bar #include int main(int argc, char* argv[]) { std::cout << "Hello\"\n"; return 0; } 0 Mon 20:16:46 yost 1183 Z% cd build ; cmake .. -- The CXX compiler identification is GNU 4.9.2 -- Checking whether CXX compiler has -isysroot -- Checking whether CXX compiler has -isysroot - yes -- Checking whether CXX compiler supports OSX deployment target flag -- Checking whether CXX compiler supports OSX deployment target flag - yes -- Check for working CXX compiler: /opt/local/bin/c++ -- Check for working CXX compiler: /opt/local/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build 0 Mon 20:16:58 yost 1184 Z% make Scanning dependencies of target foo [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input file unused because linking not done Linking CXX executable foo c++: error: CMakeFiles/foo.dir/foo.bar.o: No such file or directory CMakeFiles/foo.dir/build.make:85: recipe for target 'foo' failed make[2]: *** [foo] Error 1 CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/foo.dir/all' failed make[1]: *** [CMakeFiles/foo.dir/all] Error 2 Makefile:75: recipe for target 'all' failed make: *** [all] Error 2 2 Mon 20:17:01 yost 1185 Z% rm -rf * ; cmake .. zsh: sure you want to delete all the files in /Users/yost/p/c++/cmake/asm/build [yn]? y -- The CXX compiler identification is GNU 4.9.2 -- Checking whether CXX compiler has -isysroot -- Checking whether CXX compiler has -isysroot - yes -- Checking whether CXX compiler supports OSX deployment target flag -- Checking whether CXX compiler supports OSX deployment target flag - yes -- Check for working CXX compiler: /opt/local/bin/c++ -- Check for working CXX compiler: /opt/local/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build 0 Mon 20:23:00 yost 1201 Z% make VERBOSE=1 /Applications/CMake.app/Contents/bin/cmake -H/Users/yost/p/c++/cmake/asm -B/Users/yost/p/c++/cmake/asm/build --check-build-system CMakeFiles/Makefile.cmake 0 /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_start /Users/yost/p/c++/cmake/asm/build/CMakeFiles /Users/yost/p/c++/cmake/asm/build/CMakeFiles/progress.marks make -f CMakeFiles/Makefile2 all make[1]: Entering directory '/Users/yost/p/c++/cmake/asm/build' make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/depend make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' cd /Users/yost/p/c++/cmake/asm/build && /Applications/CMake.app/Contents/bin/cmake -E cmake_depends "Unix Makefiles" /Users/yost/p/c++/cmake/asm /Users/yost/p/c++/cmake/asm /Users/yost/p/c++/cmake/asm/build /Users/yost/p/c++/cmake/asm/build /Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake --color= Dependee "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake" is newer than depender "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". Dependee "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". Scanning dependencies of target foo make[2]: Leaving directory '/Users/yost/p/c++/cmake/asm/build' make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/build make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_report /Users/yost/p/c++/cmake/asm/build/CMakeFiles 1 [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o /opt/local/bin/c++ -o CMakeFiles/foo.dir/foo.bar.o -c /Users/yost/p/c++/cmake/asm/foo.bar c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input file unused because linking not done Linking CXX executable foo /Applications/CMake.app/Contents/bin/cmake -E cmake_link_script CMakeFiles/foo.dir/link.txt --verbose=1 /opt/local/bin/c++-Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/foo.dir/foo.bar.o -o foo c++: error: CMakeFiles/foo.dir/foo.bar.o: No such file or directory CMakeFiles/foo.dir/
Re: [CMake] nonstandard C++ source filename extension
Hi Dave. This looks like a message directly from your compiler. Does it work if you try to compile the file manually (no CMake)? Petr On Tue, Mar 17, 2015 at 5:10 AM, Dave Yost wrote: > From what I can glean online, I’ve tried this: > > set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) > add_executable(foo foo.bar) > set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) > > > but it doesn’t work. > What am I missing? > > 0 Mon 20:16:15 yost > 1181 Z% cat CMakeLists.txt > cmake_minimum_required(VERSION 3.0 FATAL_ERROR) > project(asm CXX) > > set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) > add_executable(foo foo.bar) > set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) > 0 Mon 20:16:43 yost > 1182 Z% cat foo.bar > #include > > int main(int argc, char* argv[]) { > std::cout << "Hello\"\n"; > return 0; > } > 0 Mon 20:16:46 yost > 1183 Z% cd build ; cmake .. > -- The CXX compiler identification is GNU 4.9.2 > -- Checking whether CXX compiler has -isysroot > -- Checking whether CXX compiler has -isysroot - yes > -- Checking whether CXX compiler supports OSX deployment target flag > -- Checking whether CXX compiler supports OSX deployment target flag - yes > -- Check for working CXX compiler: /opt/local/bin/c++ > -- Check for working CXX compiler: /opt/local/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > -- Configuring done > -- Generating done > -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build > 0 Mon 20:16:58 yost > 1184 Z% make > Scanning dependencies of target foo > [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o > c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input file > unused because linking not done > Linking CXX executable foo > c++: error: CMakeFiles/foo.dir/foo.bar.o: No such file or directory > CMakeFiles/foo.dir/build.make:85: recipe for target 'foo' failed > make[2]: *** [foo] Error 1 > CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/foo.dir/all' failed > make[1]: *** [CMakeFiles/foo.dir/all] Error 2 > Makefile:75: recipe for target 'all' failed > make: *** [all] Error 2 > 2 Mon 20:17:01 yost > 1185 Z% rm -rf * ; cmake .. > zsh: sure you want to delete all the files in > /Users/yost/p/c++/cmake/asm/build [yn]? y > -- The CXX compiler identification is GNU 4.9.2 > -- Checking whether CXX compiler has -isysroot > -- Checking whether CXX compiler has -isysroot - yes > -- Checking whether CXX compiler supports OSX deployment target flag > -- Checking whether CXX compiler supports OSX deployment target flag - yes > -- Check for working CXX compiler: /opt/local/bin/c++ > -- Check for working CXX compiler: /opt/local/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > -- Configuring done > -- Generating done > -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build > 0 Mon 20:23:00 yost > 1201 Z% make VERBOSE=1 > /Applications/CMake.app/Contents/bin/cmake -H/Users/yost/p/c++/cmake/asm > -B/Users/yost/p/c++/cmake/asm/build --check-build-system > CMakeFiles/Makefile.cmake 0 > /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_start > /Users/yost/p/c++/cmake/asm/build/CMakeFiles > /Users/yost/p/c++/cmake/asm/build/CMakeFiles/progress.marks > make -f CMakeFiles/Makefile2 all > make[1]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/depend > make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > cd /Users/yost/p/c++/cmake/asm/build && > /Applications/CMake.app/Contents/bin/cmake -E cmake_depends "Unix > Makefiles" /Users/yost/p/c++/cmake/asm /Users/yost/p/c++/cmake/asm > /Users/yost/p/c++/cmake/asm/build /Users/yost/p/c++/cmake/asm/build > /Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake > --color= > Dependee > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake" is > newer than depender > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". > Dependee > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/CMakeDirectoryInformation.cmake" > is newer than depender > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". > Scanning dependencies of target foo > make[2]: Leaving directory '/Users/yost/p/c++/cmake/asm/build' > make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/build > make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_report > /Users/yost/p/c++/cmake/asm/build/CMakeFiles 1 > [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o > /opt/local/bin/c++ -o CMakeFiles/foo.dir/foo.bar.o -c > /Users/yost/p/c++/cmake/asm/foo.bar > c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input fil
Re: [CMake] nonstandard C++ source filename extension
Hi Dave, try add_definitions("-x c++") CMakeLists.txt cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(asm CXX) add_definitions("-x c++") set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) add_executable(foo foo.bar) set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) Adam On Tue, Mar 17, 2015 at 2:10 PM, Dave Yost wrote: > From what I can glean online, I’ve tried this: > > set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) > add_executable(foo foo.bar) > set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) > > > but it doesn’t work. > What am I missing? > > 0 Mon 20:16:15 yost > 1181 Z% cat CMakeLists.txt > cmake_minimum_required(VERSION 3.0 FATAL_ERROR) > project(asm CXX) > > set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) > add_executable(foo foo.bar) > set_target_properties(foo PROPERTIES LINKER_LANGUAGE CXX) > 0 Mon 20:16:43 yost > 1182 Z% cat foo.bar > #include > > int main(int argc, char* argv[]) { > std::cout << "Hello\"\n"; > return 0; > } > 0 Mon 20:16:46 yost > 1183 Z% cd build ; cmake .. > -- The CXX compiler identification is GNU 4.9.2 > -- Checking whether CXX compiler has -isysroot > -- Checking whether CXX compiler has -isysroot - yes > -- Checking whether CXX compiler supports OSX deployment target flag > -- Checking whether CXX compiler supports OSX deployment target flag - yes > -- Check for working CXX compiler: /opt/local/bin/c++ > -- Check for working CXX compiler: /opt/local/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > -- Configuring done > -- Generating done > -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build > 0 Mon 20:16:58 yost > 1184 Z% make > Scanning dependencies of target foo > [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o > c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input file > unused because linking not done > Linking CXX executable foo > c++: error: CMakeFiles/foo.dir/foo.bar.o: No such file or directory > CMakeFiles/foo.dir/build.make:85: recipe for target 'foo' failed > make[2]: *** [foo] Error 1 > CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/foo.dir/all' failed > make[1]: *** [CMakeFiles/foo.dir/all] Error 2 > Makefile:75: recipe for target 'all' failed > make: *** [all] Error 2 > 2 Mon 20:17:01 yost > 1185 Z% rm -rf * ; cmake .. > zsh: sure you want to delete all the files in > /Users/yost/p/c++/cmake/asm/build [yn]? y > -- The CXX compiler identification is GNU 4.9.2 > -- Checking whether CXX compiler has -isysroot > -- Checking whether CXX compiler has -isysroot - yes > -- Checking whether CXX compiler supports OSX deployment target flag > -- Checking whether CXX compiler supports OSX deployment target flag - yes > -- Check for working CXX compiler: /opt/local/bin/c++ > -- Check for working CXX compiler: /opt/local/bin/c++ -- works > -- Detecting CXX compiler ABI info > -- Detecting CXX compiler ABI info - done > -- Detecting CXX compile features > -- Detecting CXX compile features - done > -- Configuring done > -- Generating done > -- Build files have been written to: /Users/yost/p/c++/cmake/asm/build > 0 Mon 20:23:00 yost > 1201 Z% make VERBOSE=1 > /Applications/CMake.app/Contents/bin/cmake -H/Users/yost/p/c++/cmake/asm > -B/Users/yost/p/c++/cmake/asm/build --check-build-system > CMakeFiles/Makefile.cmake 0 > /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_start > /Users/yost/p/c++/cmake/asm/build/CMakeFiles > /Users/yost/p/c++/cmake/asm/build/CMakeFiles/progress.marks > make -f CMakeFiles/Makefile2 all > make[1]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/depend > make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > cd /Users/yost/p/c++/cmake/asm/build && > /Applications/CMake.app/Contents/bin/cmake -E cmake_depends "Unix > Makefiles" /Users/yost/p/c++/cmake/asm /Users/yost/p/c++/cmake/asm > /Users/yost/p/c++/cmake/asm/build /Users/yost/p/c++/cmake/asm/build > /Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake > --color= > Dependee > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/DependInfo.cmake" is > newer than depender > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". > Dependee > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/CMakeDirectoryInformation.cmake" > is newer than depender > "/Users/yost/p/c++/cmake/asm/build/CMakeFiles/foo.dir/depend.internal". > Scanning dependencies of target foo > make[2]: Leaving directory '/Users/yost/p/c++/cmake/asm/build' > make -f CMakeFiles/foo.dir/build.make CMakeFiles/foo.dir/build > make[2]: Entering directory '/Users/yost/p/c++/cmake/asm/build' > /Applications/CMake.app/Contents/bin/cmake -E cmake_progress_report > /Users/yost/p/c++/cmake/asm/build/CMakeFiles 1 > [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o
Re: [CMake] nonstandard C++ source filename extension
This works for me: ---CMakeLists.txt cmake_minimum_required(VERSION 3.0 FATAL_ERROR) project(asm CXX) add_executable(foo foo.bar) set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) ---foo.bar--- int main() { return 0;} $ /cygdrive/c/Program\ Files\ \(x86\)/CMake/bin/cmake -GNinja .. -- The CXX compiler identification is MSVC 16.0.40219.1 -- Check for working CXX compiler using: Ninja -- Check for working CXX compiler using: Ninja -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Configuring done -- Generating done -- Build files have been written to: C:/Users/hoffman/foo/b hoffman@quasar ~/foo/b $ ninja [1/2] Building CXX object CMakeFiles\foo.dir\foo.bar.obj foo.bar [2/2] Linking CXX executable foo.exe -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
Re: [CMake] nonstandard C++ source filename extension
On Tue, Mar 17, 2015 at 12:10 AM, Dave Yost wrote: > set_source_files_properties(foo.bar PROPERTIES LANGUAGE CXX) [snip] > [100%] Building CXX object CMakeFiles/foo.dir/foo.bar.o > c++: warning: /Users/yost/p/c++/cmake/asm/foo.bar: linker input file unused > because linking not done > Linking CXX executable foo > c++: error: CMakeFiles/foo.dir/foo.bar.o: No such file or directory The LANGUAGE property just tells CMake what the language is in case CMake does not know an extension supported by a particular compiler. It does not cause the "-x c++" or similar flag to be added: http://www.cmake.org/Bug/view.php?id=14516 The latter is needed to convince the compiler of the language. -Brad -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake