我正在使用CMake在Linux中開發C++項目。CMake - 針對不同目標的不同包含目錄?
我正在創建兩個庫,LibA
和LibB
。我不想要LibA
和LibB
具有相同的包含目錄。有沒有什麼辦法可以設置只有LibA
包括DirectoryA
並且只設置LibB
包含DirectoryB
?
編輯:
兩個LibA
和LibB
將在可執行文件,MyExe
使用。當我在MyExe的源代碼中使用#include
LibA.h
和LibB.h
時,我無法從DirectoryA
和DirectoryB
共存於MyExe
中包含的頭文件,因爲這會導致命名空間衝突。
這可能嗎?
編輯2:這是我的CMakeLists.txt include_directories(包括)
add_library(LibA src/LibA.cpp include/LibA.h)
set_property(TARGET LibA PROPERTY INCLUDE_DIRECTORIES /opt/SomeLibrary2.0/include/)
target_link_libraries(LibA /opt/SomeLibrary2.0/lib/a.so /opt/SomeLibrary2.0/lib/b.so /opt/SomeLibrary2.0/lib/c.so)
add_library(LibB src/LibB.cpp include/LibB.h)
set_property(TARGET LibB PROPERTY INCLUDE_DIRECTORIES ${LIB_B_INCLUDE_DIRS})
target_link_libraries(LibB ${LIB_B_LIBRARIES})
add_executable(MyExe src/myexe.cpp)
target_link_libraries(MyExe LibA LibB)
但我仍然得到錯誤。 LibA.h說SomeLibrary的頭文件找不到?
斯普利特CMake的文件中,使他們子目錄。 – IdeaHat
感謝您的評論。我原來的問題已更新,以更好地反映我的問題。 – trianta2
'我不能從DirectoryA和DirectoryB共存在MyExe包含的頭文件,因爲這將創建名稱空間衝突'恕我直言,這是設計問題,如果你解決包括衝突你可能有奇怪的鏈接器錯誤和意外的運行時行爲 – 2013-12-17 21:07:23