में सी और सीईओ फाइलों को जोड़ना मैं सीएम + के साथ सी ++ ऐप बना रहा हूं। लेकिन यह सी में कुछ स्रोत फ़ाइलों का उपयोग करता है यहाँ सरलीकृत संरचना है:सीएमके
ट्रंक/CMakeLists.txt:
project(myapp)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -Wall")
add_subdirectory (src myapp)
ट्रंक/src/main.cpp:
#include "smth/f.h"
int main() { f(); }
ट्रंक/src/CMakeLists.txt:
add_subdirectory (smth)
link_directories (smth)
set(APP_SRC main)
add_executable (myapp ${APP_SRC})
target_link_libraries (myapp smth)
ट्रंक/src/ख़ाली/एफ एच:
#ifndef F_H
#define F_H
void f();
#endif
ट्रंक/src/ख़ाली/एफसी:
#include "f.h"
void f() {}
ट्रंक/src/ख़ाली/CMakeLists.txt
set (SMTH_SRC some_cpp_file1 some_cpp_file2 f)
add_library (smth STATIC ${SMTH_SRC})
समस्या है: मैं gmake चलाने के लिए, यह सभी फाइलों को संकलित करता है तथा जब यह सभी libs को एक साथ जोड़ता है, तो मुझे मिलता है:
undefined reference to `f()` in main.cpp
अगर मैं fc में fc का नाम बदलता हूं तो सब कुछ ठीक हो जाता है। क्या अंतर है और इसे कैसे संभालना है?
धन्यवाद
इस बारे में एक अच्छा पठन: 'मिक्सिंग सी और सी ++:' http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html – Lazer